我管理一个网站,我有一个禁止的IP列表,如下所示:
order allow,deny
deny from xxx.xxx.xxx.xxx
deny from yyy.yyy.yyy.yyy
etc...
allow from all
到目前为止一切顺利。
现在,已经确定只有一些特定的文件和文件夹应该公开, 其余的都应该是私人的。
我所做的如下:在被禁止的IP列表的底部,我添加了这个 为了阻止一切:
Order allow,deny
deny from All
然后,为了允许访问我添加的公共内容:
<FilesMatch foo.html>
order deny,allow
</FilesMatch>
<FilesMatch bar.jpg>
order deny,allow
</FilesMatch>
AND,在需要公共访问权限的文件夹中,我添加了一个特定的htacces,如下所示:
satisfy any
Order allow,deny
Allow from all
但现在的问题是根htacces禁止的IP可以访问 这些公共文件,而我们希望禁止它们。
答案 0 :(得分:0)
将特定于IP的Deny
与Deny from all
结合起来没有意义 - 后者已经涵盖了每个特定的。{/ p>
您必须专门为非公开文件和文件夹设置Deny from all
。
答案 1 :(得分:0)
使用mod_rewrite规则可能会更容易。请考虑以下代码:
RewriteEngine On
# ban all the IP addresses you want here
RewriteCond %{REMOTE_ADDR} ^(xxx\.xxx\.xxx\.xxx|yyy\.yyy\.yyy\.yyy)$
RewriteRule ^ - [F,L]
# ban all except few allowed files/folders here
RewriteCond %{REQUEST_URI} !/(foo\.html|bar\.jpg|folder1/|folder2/) [NC]
RewriteRule ^ - [F,L]
这应放在root .htaccess中,并确保从子文件夹中删除所有其他.htaccess。