0
我试图阻止坏机器人点击某个链接到一个运行Apache 2.4的站点。这里是我试图在htaccess
:拒绝访问URL,然后在htaccess中的IP块
RewriteEngine On
# Check for the suspect querystring first
RewriteCond %{QUERY_STRING} gclid=(.*)
RewriteRule .* - [E=IsAdClick:1]
# Filter on those requests with an ad string
<IfDefine IsAdClick>
# BAN USER BY IP
Order Deny,Allow
Deny from 172.64.0.0/13
Deny from 173.245.48.0/20
...
</IfDefine>
拒绝规则的工作,如果他们是自己的,但对我的生活我无法获得有条件工作。我试过其他东西,如
<If "%{QUERY_STRING} =~ /gclid=.*?/">
# BAN USER BY IP
Order Deny,Allow
Deny from 172.64.0.0/13
Deny from 173.245.48.0/20
...
</If>
但没有任何效果。交通仍然通过。我错过了什么?我不想为每个IP写一大堆RewriteCond
,也不要更改.config
文件。谢谢。
更新:根据this SO post似乎IfDefine
只响应命令行参数。参考文献:
Apache中IfDefine指令,只有,只有当我只能说我 意味着ONLY,响应在命令行中传递的参数。让我 强调一点。只有命令行!
如何达到我期待的效果?