我有一个易受攻击的页面,因此,为了减少匿名攻击,我在我在网上找到的 .htaccess 中使用了这段代码:
# BLOCK PROXY VISITS
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP:VIA} !^$ [OR]
RewriteCond %{HTTP:FORWARDED} !^$ [OR]
RewriteCond %{HTTP:USERAGENT_VIA} !^$ [OR]
RewriteCond %{HTTP:X_FORWARDED_FOR} !^$ [OR]
RewriteCond %{HTTP:PROXY_CONNECTION} !^$ [OR]
RewriteCond %{HTTP:XPROXY_CONNECTION} !^$ [OR]
RewriteCond %{HTTP:HTTP_PC_REMOTE_ADDR} !^$ [OR]
RewriteCond %{HTTP:HTTP_CLIENT_IP} !^$
RewriteRule .* - [F]
</IfModule>
我的问题是,一位广告客户在其公司内部使用代理,因此无法访问我的网页。我不知道正则表达式,即使我认为我可以在看到它时识别,就像“哦,看起来像一个正则表达式”。我认为上面的条件是正则表达式,但我没有知道改变它们的方式,只有来自这个特定静态IP的代理访问不被禁止。
如果可能,我该如何实现?提前谢谢!
修改如我所知,我在serverfault.com处提出了这个问题。请点击此链接了解更多信息。
答案 0 :(得分:0)
如果此客户始终具有相同的特定IP,则可以使用RewriteCond %{REMOTE_ADDR}
检测到此情况并停止进一步重写
RewriteEngine on
# new rule
RewriteCond %{REMOTE_ADDR} =1.2.3.4
RewriteRule ^ - [L]
# old proxy rule
RewriteCond %{HTTP:VIA} !^$ [OR]
...
...
RewriteCond %{HTTP:HTTP_CLIENT_IP} !^$
RewriteRule .* - [F]
您必须将此规则放在开头,否则其他规则将拒绝该请求。第一条规则允许IP 1.2.3.4像以前一样查看您的网站和第二条规则块。所有其他客户都不受影响,可以像以前一样看到所有内容。