是否有明确设置目录列表的指令没有索引文件到 403 Forbidden? 默认行为返回 404,因为mod_dir找不到索引文件。
我没有mod_autoindex已加载并Options
设置为FollowSymLinks
。我试过了-Indexes
,但仍然返回 404。
<IfModule dir_module>
DirectoryIndex index.php index.html index.htm
DirectorySlash On
</IfModule>
<Directory /var/www>
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
我应该没关系,但我正在使用 Apache 2.4。
答案1
经过多次尝试和错误后,我终于回答了自己的问题。此答案应适用于 Apache >= 2.0。
总而言之,Indexes
该指令的选项似乎Options
要求mod_autoindex。除非您想了解有关默认 Apache 行为的更多信息,否则您现在可以停止阅读。
更多信息
关键在于mod_autoindex已加载。如果未加载,则设置Options -Indexes
将不起作用并返回 404,这是有道理的,因为 mod_dirDirectoryIndex
指令找不到您的索引文件。如果已加载,则设置Options -Indexes
将返回 403。
这在Apache 选项文档在下面索引,这有点令人困惑,因为它Options
是 mod_core 的一部分。
索引
如果请求映射到目录的 URL,并且该目录中没有 DirectoryIndex(例如 index.html),则 mod_autoindex 将返回该目录的格式化列表。
...并在mod_autoindex页:
使用 Options +Indexes 可以启用自动索引生成。有关更多详细信息,请参阅 Options 指令。
我的测试表明启用/禁用 .htaccess 文件AllowOverride
是无关紧要的。