是否有一个 Apache2 指令可以明确设置目录列表 403 Forbidden?

是否有一个 Apache2 指令可以明确设置目录列表 403 Forbidden?

是否有明确设置目录列表的指令没有索引文件到 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是无关紧要的。

相关内容