2013-03-27 80 views
1

是否有.htaccess命令拒绝访问特定文件中的每个IP? 假设我有一个名为bans.txt(坐在我的.htaccess文件旁边)的文件,它包含一个简单的ips列表,一个在另一个下面。我想拒绝访问该文件中的每个IP。有没有一个简单的.htaccess命令可以做到这一点?就像:拒绝从文件中的ips访问

Deny from bans.txt 

我一直在寻找,我不认为有,但只是检查,谢谢。

回答

1

实际上,纯粹从Apache实现这个任务是一个很好的方法。你需要使用一个称为RewriteMap

1 - 首先启用了mod_rewrite并通过httpd.conf的.htaccess,然后把这个代码在你httpd.conf,使一个RewriteMap称为ipmap

RewriteMap ipmap txt:/some/path/to/ipmap.txt 

2 - 然后创建您的文本文件/some/path/to/ipmap.txt带有这样的条目列出您要禁止的所有IP

192.168.0.1 1 
192.168.0.4 1 
10.119.35.8 1 
... 
... 

3 - 反弹的Apache进程(因为你已经改变了httpd.conf

4 - 最后把这个代码在你.htaccess$DOCUMENT_ROOT目录下:

RewriteEngine On 
RewriteBase/

# if IP is found in ipmap then return Forbidden error 
RewriteCond ${ipmap:%{REMOTE_ADDR}} ^1$ 
RewriteRule^- [F,L] 
+0

整洁的确,谢谢! – Sophivorus 2013-03-28 15:56:02

+0

不客气,很高兴它解决了。 RewriteMap也有更好的功能,例如让您直接从.htaccess运行SQL或脚本。 – anubhava 2013-03-28 15:58:29