是否有 .htaccess 命令拒绝访问特定文件中的每个 ip?假设我有一个名为 bans.txt 的文件(位于我的 .htaccess 文件旁边),其中包含一个简单的 ips 列表,一个在另一个之下。我想拒绝访问该文件中的每个 ip。是否有一个简单的 .htaccess 命令可以做到这一点?就像是:
Deny from bans.txt
我一直在寻找,我认为没有,但只是检查一下,谢谢。
实际上,有一种巧妙的方法可以完全从 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]