使用apache2服务器配置匹配/拒绝访问所有子目录
如何拒绝访问给定目录的所有子目录?
(允许手动修改目录树中单个项目的访问权限。)
我尝试用
<Directory(Match)>
指令来做。服务器配置(000-sites-enabled)如下所示:
DocumentRoot /var/www
<Directory /var/www>
Allow from all
Deny from none
Order deny,allow
</Directory>
<Directory /var/www/*>
Deny from all
</Directory>
对http://localhost/
的查询成功显示/var/www/index.html
,并且对所有子目录的所有查询都失败。
问题是:对httproot中文件的任何查询都会失败 - 即请求http://localhost/index.html
将导致403 Forbidden
。
<Directory(Match)>
指令似乎实际匹配目录AND文件!?
为了看看这是否属实,我试过:
<Directory /var/www/i*>
Deny from all
</Directory>
这拒绝仅访问以“i”开头的文件/目录。
有没有办法改变这种行为,让<Directory>
只匹配目录?还有另一种方法可以实现所有子目录被拒绝吗? (除了手动拒绝所有文件或手动启用所有文件)
没有找到相关结果
已邀请:
6 个回复
箩冀娥
注意目录模式后面的尾部斜杠
,这将使它只匹配目录,而不是文件! 这与我们对
指令的期望完全一样 - 因为它拒绝只访问
的直接子目录。 指定的子目录(树中的任何位置)仍然可以使用
指令手动重新启用。 这与
相反 - 也匹配所有文件&amp;树中的目录和 - 覆盖树中任何项目的所有
或
指令。
玩翁文醚碱
编辑 为了不拒绝子子目录(下面的注释),在配置文件中添加以下上面的DirectoryMatch:
惜堡沁戚
您可能想要添加选项等。 诀窍是如何合并指令。
碉罕城爸
然后为该目录中的Apache用户以及导致该目录的所有目录(例如/ home和/ my)授予读取权限 这样,当发生某些根目录配置错误时,不存在某些内容泄漏的风险。
际恃啸称桅
指令中删除
选项来禁用所有子目录中的自动索引,因此对于默认配置,
指令应如下所示: httpd.conf中:
(未设置“索引”选项。) 然后,将
或
文件放在您希望可供客户端访问的每个特定子目录中。 如果要在某个特定目录中启用自动索引,可以在这些目录中添加
文件,并将此行放在
文件中:
请注意,
将对其目录及其所有子目录进行递归影响,因此您应该通过添加
并禁用自动索引来排除任何您不希望使用此选项的递归子目录:
注意:要启用
文件并对apache配置生效,您应该在目录上
匹配您要放置
文件。
嗜蒂谷尘旱