是否有一个指令明确设置没有索引文件的目录列表为403 Forbidden? 由于mod_dir找不到索引文件,默认行为将返回404。
我没有加载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。
经过大量的反复试验后,回答自己的问题。 这个答案应该适用于Apache> = 2.0。
总之,看来Options指令的Indexes选项需要mod_autoindex 。 您可以停止阅读,除非您想了解有关默认Apache行为的更多信息。
更多信息
关键是是否加载了mod_autoindex 。 如果未加载,则设置Options -Indexes将不起作用,并返回404,这是合理的,因为mod_dir DirectoryIndex指令找不到您的索引文件。 如果加载,设置Options -Indexes将返回403。
这在“ 索引”下的“ Apache选项”文档中有所解释,这有点令人困惑,因为Options是mod_core的一部分。
索引
如果请求映射到目录的URL,并且该目录中没有DirectoryIndex(例如,index.html),则mod_autoindex将返回目录的格式化列表。
…并在mod_autoindex页面上解释:
使用“选项+索引”启用自动索引生成。 有关更多详细信息,请参阅Options指令。
我的testing表明,使用AllowOverride启用/禁用.htaccess文件是无关紧要的。