htaccess:阻止特定的IP,然后只允许部分站点访问

时间:2014-02-21 10:11:42

标签: .htaccess

我管理一个网站,我有一个禁止的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可以访问 这些公共文件,而我们希望禁止它们。

2 个答案:

答案 0 :(得分:0)

将特定于IP的DenyDeny 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。