.htaccess 使用htaccess禁止文本文件中的IP

.htaccess 使用htaccess禁止文本文件中的IP,.htaccess,ip,text-files,block,.htaccess,Ip,Text Files,Block,我阅读并理解如何使用htaccess阻止ip: order deny,allow deny from 111.222.33.44 deny from 55.66.77.88 ... allow from all 但我的黑IP列表包括数千个IP。 我将所有IP保存到一个blacklist.txt文件中 我可以使用htaccess调用blacklist.txt并阻止存储在此文件中的所有IP吗?如果是,如何使用?您可以尝试使用的变体。您需要访问服务器/vhost配置,因为该指令仅在那里有效。然后可以

我阅读并理解如何使用htaccess阻止ip:

order deny,allow
deny from 111.222.33.44
deny from 55.66.77.88
...
allow from all
但我的黑IP列表包括数千个IP。 我将所有IP保存到一个blacklist.txt文件中


我可以使用htaccess调用blacklist.txt并阻止存储在此文件中的所有IP吗?如果是,如何使用?

您可以尝试使用的变体。您需要访问服务器/vhost配置,因为该指令仅在那里有效。然后可以在htaccess文件中使用映射

假设您的blacklist.txt文件如下所示:

111.222.33.44  deny
55.66.77.88    deny
192.168.0.1    allow
#!/bin/bash

while true
do
    read INPUT
    MATCH=`grep $INPUT /path/to/blacklist.txt`
    if [ -z "$MATCH"  ]; then
        echo "allow"
    else
        echo "deny"
    fi
done
您可以这样定义地图:

RewriteEngine On
RewriteMap access txt:/path/to/blacklist.txt
RewriteEngine On
RewriteMap access prg:/path/to/blacklist.txt
然后在htaccess中,您可以调用映射:

RewriteEngine On 
RewriteCond ${access:%{REMOTE_ADDR}} deny [NC]
RewriteRule ^ - [L,F]
该条件调用映射并检查远程地址是否映射到单词“deny”,如果是,重写规则完全禁止访问

如果您的blacklist.txt只是一个IP列表,并且您不想在每个IP之后添加一个“拒绝”,那么您需要调用程序映射类型并编写一个脚本,如下所示:

111.222.33.44  deny
55.66.77.88    deny
192.168.0.1    allow
#!/bin/bash

while true
do
    read INPUT
    MATCH=`grep $INPUT /path/to/blacklist.txt`
    if [ -z "$MATCH"  ]; then
        echo "allow"
    else
        echo "deny"
    fi
done
无限循环读取输入并将blacklist.txt文件变灰。如果IP在文件中,则输出“拒绝”,否则输出“允许”。然后创建地图,如下所示:

RewriteEngine On
RewriteMap access txt:/path/to/blacklist.txt
RewriteEngine On
RewriteMap access prg:/path/to/blacklist.txt
而根据地图检查的重写规则也不例外