我有以下代码来阻止htaccess中的单个IP地址,它可以正常工作
SetEnvIF X-Forwarded-For 182.65.209.192 DenyIP
Order allow,deny
Deny from env=DenyIP
Allow from all
现在我想阻止国家/地区的IP地址访问我的网站。
我尝试了这个,但没有效果
SetEnvIF X-Forwarded-For 37.230.192.0/19 DenyIP
和
SetEnvIF X-Forwarded-For 37.230.192.[0-19] DenyIP
而不是
SetEnvIF X-Forwarded-For 182.65.209.192 DenyIP
如何阻止ip范围或子网ip(例如:37.230.192.0/19)?
答案 0 :(得分:2)
SetEnvIF使用正则表达式:
http://httpd.apache.org/docs/current/en/mod/mod_setenvif.html#setenvif
您可以使用:
SetEnvIF X-Forwarded-For ^37\.230\.192\.[01][0-9]?$ DenyIP
答案 1 :(得分:2)
您无法与CIDR地址范围匹配,您需要使用正则表达式。你想要这样的东西:
SetEnvIF X-Forwarded-For 37\.230\.(19[2-9]|2[01][0-9]|22[0-3])\.[0-9]+ DenyIP
SetEnvIf Remote_Addr 37\.230\.(19[2-9]|2[01][0-9]|22[0-3])\.[0-9]+ DenyIP
SetEnvIF X-Forwarded-For 37\.230\.2[23][0-9]\.[0-9]+ DenyIP
SetEnvIf Remote_Addr 37\.230\.2[23][0-9]\.[0-9]+ DenyIP