每如果我尚未上传 index.html,如何防止人们查看父目录中的文件列表?如果没有 index.* 文件,我可以看到如何禁用文件列表。
我如何允许列出根目录的文件,但不允许列出任何其他子目录?
提前致谢。
答案1
由于您标记了问题,您可以在Apache 2.4 的.htaccess
根文件中执行以下操作:.htaccess
# Default - Directory listings disabled (mod_autoindex)
Options -Indexes
# Override - Allow directory listings for the root only
<If "%{REQUEST_URI} == '/'">
Options +Indexes
</If>
答案2
通常,子目录将继承您在 Apache 中应用于其父目录的相同设置。而且,据我所知,您无法更改这一点,并且没有办法将指令的范围限制在单个目录级别。
这意味着您需要:
- 在父目录上设置所需的选项/指令
- 更改/覆盖/否定所有(当前和新的)子目录的选项/指令。
最简单的方法是使用DirectoryMatch
指示。
在您的主 httpd.conf (或包含) 中设置
<Directory "/path/to/example.com/">
# enable directory listings
Options +Indexes
</Directory>
<DirectoryMatch "/path/to/example.com/.*/">
# Disable directory listings for all sub directories of /path/to/example.com/
Options -Indexes
</Directory>
(未经测试)