是否存在拒绝访问特定文件中每个 IP 的 .htaccess 命令? 假设我有一个名为 bans.txt 的文件(位于我的 .htaccess 文件旁边),其中包含一个简单的 ip 列表,一个在另一个之下。我想拒绝访问该文件中的每个 IP。有没有一个简单的 .htaccess 命令可以做到这一点?像这样的东西:
Deny from bans.txt
我一直在寻找,但我认为没有,但只是检查一下,谢谢。
最佳答案
实际上,有一种纯粹从 Apache 完成此任务的巧妙方法。您需要使用名为 RewriteMap 的功能
1 - 首先通过 httpd.conf
启用 mod_rewrite 和 .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 - 最后将此代码放入 $DOCUMENT_ROOT
目录下的 .htaccess
中:
RewriteEngine On
RewriteBase /
# if IP is found in ipmap then return Forbidden error
RewriteCond ${ipmap:%{REMOTE_ADDR}} ^1$
RewriteRule ^ - [F,L]
关于apache - 拒绝来自文件中的 ip 的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15662645/