Apache 不会自动索引
Apache won't autoindex
- Oracle Linux 7.3(RHEL 派生)
- 阿帕奇 2.4.6
我正在 /srv/www 中为 yum、脚本和 kickstart 文件设置一个存储库,通过 httpd 提供。我想要一个自动索引,所以我没有 index.html。而且,这是该内部服务器唯一要做的事情。所以,httpd.conf:
DocumentRoot "/srv/www"
<Directory "/srv/www">
AllowOverride all
Options Indexes FollowSymLinks
Require all granted
</Directory>
但是,我仍然收到错误消息:
[autoindex:error] [pid 12345] [client <IP address>:<port>] AH01276: Cannot serve directory /srv/www: No matching DirectoryIndex (index.html) found, and server-generated directory index forbidden by Options directive.
除了 Options
指令允许自动索引!我试过了 Options All
。我试过了 Options +Indexes +FollowSymLinks
。我查看了 7 或 8 Google 次点击。没有任何效果。
设置LogLevel debug
不会增加消息。
我错过了什么?
如 here 所述,在没有 index.html
(或其他已配置的索引文件)的情况下,在 /etc/httpd/conf.d/welcome.conf
处配置的欢迎页面将通过其 LocationMatch
指令。重命名文件,使其不以 .conf
结尾并且自动索引工作。
显然在没有启用索引的情况下登陆另一个虚拟主机或目录,或者 .htaccess 妨碍了。
首先设置 "AllowOverride none",因为如果您不使用任何 .htaccess 文件(并且因为您可以访问主服务器,所以不需要它),激活它是荒谬的。设置 AllowOverride 后,如果您最近添加了索引但没有重新启动以应用更改,请重新启动服务器。
如果问题仍然存在,运行 apachectl -S
并确保您登陆正确的虚拟主机。
我只想补充一点,在将我的 mac 更新为 Catalina 后,我的 Apache 停止工作并出现同样的错误。
我必须:
- 取消注释所需的模块(php7、重写、目录等...)
- 在选项中添加一个
+
符号 (Options +FollowSymLinks +Multiviews +Indexes
)
这对我有用。
解决方法:
确保两个 apache 模块是 运行:
mod_autoindex.so
mod_dir.so
在您的情况下,mod_autoindex.so
是 运行。现在启用第二个。
PS:保持Options -Indexes
。这一点很重要。它确保目录列表被禁用,因为您不应该允许任何人访问您服务器上的每个目录(有些目录包含相当私密的内容,例如 CMS 的目录)。
- Oracle Linux 7.3(RHEL 派生)
- 阿帕奇 2.4.6
我正在 /srv/www 中为 yum、脚本和 kickstart 文件设置一个存储库,通过 httpd 提供。我想要一个自动索引,所以我没有 index.html。而且,这是该内部服务器唯一要做的事情。所以,httpd.conf:
DocumentRoot "/srv/www"
<Directory "/srv/www">
AllowOverride all
Options Indexes FollowSymLinks
Require all granted
</Directory>
但是,我仍然收到错误消息:
[autoindex:error] [pid 12345] [client <IP address>:<port>] AH01276: Cannot serve directory /srv/www: No matching DirectoryIndex (index.html) found, and server-generated directory index forbidden by Options directive.
除了 Options
指令允许自动索引!我试过了 Options All
。我试过了 Options +Indexes +FollowSymLinks
。我查看了 7 或 8 Google 次点击。没有任何效果。
设置LogLevel debug
不会增加消息。
我错过了什么?
如 here 所述,在没有 index.html
(或其他已配置的索引文件)的情况下,在 /etc/httpd/conf.d/welcome.conf
处配置的欢迎页面将通过其 LocationMatch
指令。重命名文件,使其不以 .conf
结尾并且自动索引工作。
显然在没有启用索引的情况下登陆另一个虚拟主机或目录,或者 .htaccess 妨碍了。
首先设置 "AllowOverride none",因为如果您不使用任何 .htaccess 文件(并且因为您可以访问主服务器,所以不需要它),激活它是荒谬的。设置 AllowOverride 后,如果您最近添加了索引但没有重新启动以应用更改,请重新启动服务器。
如果问题仍然存在,运行 apachectl -S
并确保您登陆正确的虚拟主机。
我只想补充一点,在将我的 mac 更新为 Catalina 后,我的 Apache 停止工作并出现同样的错误。 我必须:
- 取消注释所需的模块(php7、重写、目录等...)
- 在选项中添加一个
+
符号 (Options +FollowSymLinks +Multiviews +Indexes
)
这对我有用。
解决方法: 确保两个 apache 模块是 运行:
mod_autoindex.so
mod_dir.so
在您的情况下,mod_autoindex.so
是 运行。现在启用第二个。
PS:保持Options -Indexes
。这一点很重要。它确保目录列表被禁用,因为您不应该允许任何人访问您服务器上的每个目录(有些目录包含相当私密的内容,例如 CMS 的目录)。