Apache 不会自动索引

Apache won't autoindex

我正在 /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 模块是 运行:

  1. mod_autoindex.so
  2. mod_dir.so

在您的情况下,mod_autoindex.so 是 运行。现在启用第二个。

PS:保持Options -Indexes。这一点很重要。它确保目录列表被禁用,因为您不应该允许任何人访问您服务器上的每个目录(有些目录包含相当私密的内容,例如 CMS 的目录)。