2

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

Deny from bans.txt

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

4

1 回答 1

2

实际上,有一种巧妙的方法可以完全从 Apache 完成这项任务。您需要使用一个名为RewriteMap的功能

1 - 首先启用 mod_rewrite 和 .htaccess httpd.conf,然后将此代码放入您的httpd.conf以启用RewriteMap调用ipmap

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

2 - 然后创建您的文本文件,其中包含您要禁止的所有 IP 的/some/path/to/ipmap.txt条目,如下所示:

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]
于 2013-03-27T16:27:23.087 回答