我需要拒绝访问某些子文件夹下的配置文件。目前我有这条规则,但它不起作用:
<Files ~ "((foo|bar))$">
Order deny,allow
Deny from all
</Files>
如果我转到www.mysite.com/foo/foo2/file.xml
,我可以查看该文件。我需要递归地foo
拒绝所有文件访问bar
更新
我已经尝试过此配置,但出现内部错误
<FilesMatch ".foo\.(*)$">
Order Allow,Deny
Deny from all
</FilesMatch>
答案1
“ <Files>
[...]将应用于具有与指定文件名匹配的基本名称(文件名的最后一个组成部分)的任何对象”。这不是你想要的。
Directory*
不工作.htaccess
你必须使用mod_rewrite
.例如:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(foo|bar) - [F]
</IfModule>
答案2
尝试使用 location 而不是文件指令:
<Location "path/to/folder-or-file">
Order Allow,Deny
Deny from all
</Location>
答案3
我会在 apache 配置中进行正则表达式匹配。然后
- 使用
<DirectoryMatch>
代替<File>
(您正在目录上进行正则表达式匹配) - 纠正你的正则表达式的严格性(特别是
$
) 简化你的正则表达式(括号太多)
<DirectoryMatch "/path/to/toplevel/(foo|bar)"> Order deny,allow Deny from all </DirectoryMatch>
请注意,这是 WWW 目录所在/path/to/toplevel/
的文件系统位置。foo
bar
但是,如果您只想通过以下方式执行此操作.htaccess
,请.htaccess
在中创建一个文件每一个您要拒绝的目录(foo、bar、foo/bar 等),然后输入以下行
Deny from all
里面。