所以,我想实现一件很容易的事情:我希望我的 Apache 网络服务器提供其自动生成的目录列表,因为它涉及静态 HTML 和 PDF 文件。
但是,我总是收到 HTTP 403 响应。
错误日志显示:
AH01276: Cannot serve directory /var/www/html/my-website/: No matching DirectoryIndex (index.php,index.html,index.htm) found, and server-generated directory index forbidden by Options directive
这是输出ls -l /var/www/html/my-website
:
drwxr-xr-x. 18 root root 4096 Jul 5 10:06 /var/www/html/my-website
来自getfacl /var/www/html/my-website
:
getfacl: Removing leading '/' from absolute path names
# file: var/www/html/my-website
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
这是虚拟主机配置部分的相关内容:
<VirtualHost 192.168.1.2:80>
ServerName my-website.local
AddDefaultCharset iso-8859-1
DirectoryIndex index.php index.html index.htm
Alias / /var/www/html/my-website/
DocumentRoot /var/www/html/my-website/
<Directory /var/www/html/my-website/>
AllowOverride none
Options +Indexes
</Directory>
</VirtualHost>
因此,既然o+rx
已设置,我希望它是可读的。我还遗漏了什么?
答案1
所以,我现在可以自己回答这个问题了。我把这个答案贴在这里,以防别人在花 4 个小时解决之前遇到同样的问题。
如果虚拟配置正确,那么全局配置可能不正确。
在这种情况下,有另一个配置文件被welcome.conf
命名,显然是 CentOS 的默认文件,它阻止了目录索引的传递。此配置文件的目的是加载欢迎页面,而不是列出目录。此配置文件的上下文是全局的。
答案2
你可能已经
Options -Indexes
与我的网站定义相关的某处。
将其更改为
Options +Indexes
并重新加载/重启/刷新。
否则,使用以下命令检查 Selinux 上下文:
# ls -la --context /var/www/html/my-website
# chcon -R system_u:object_r:httpd_sys_content_t /var/www/html/my-website/