重定向字符串/关键字referer .htaccess



我试图通过关键字或字符串重定向用户使用这个。htaccess,但它似乎是重定向所有用户,无论它是否包含关键字。我做错了什么?如有任何帮助,不胜感激。

RewriteEngine On
RewriteCond %{HTTP_REFERER} ^http://(www.)?.*(-|.)?keyword(-|.).*$  [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(www.)?.*(-|.)?key+word(-|.).*$  [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(www.)?.*(-|.)?key%20word(-|.).*$  [NC,OR]
RewriteCond %{HTTP_REFERER} keyword [NC,OR]
RewriteCond %{HTTP_REFERER} key+word [NC,OR]
RewriteCond %{HTTP_REFERER} key%20word [NC,OR]
RewriteRule ^.* http://myurl.com [R=301,L]

还重写条件以阻止rDNS未解析的主机。主机名与IP完全相同。这是一个坏的机器人足迹,我试图消除,但它似乎是捕捉和主机,如果它包含一个IP地址。

 RewriteCond %{HTTP_HOST}::%{REMOTE_ADDR} ^(.+?)::1$ [OR]
 RewriteCond %{REMOTE_HOST}::%{REMOTE_ADDR} ^(.+?)::1$ [OR]

日志
5/20/2014 01:51 PM | UA: Mozilla/5.0 (Linux; U; en-us; KFAPWI Build/JDQ39)
AppleWebKit/535.19 (KHTML,     like Gecko) Silk/3.17 Safari/535.19 Silk-Accelerated=true| 
IP: 207.86.30.98   HOST: 207.86.30.98 |

您需要去掉条件末尾的OR标志。它使mod_rewrite认为一个空白条件足以满足重写:

RewriteEngine On
RewriteCond %{HTTP_REFERER} ^http://(www.)?.*(-|.)?keyword(-|.).*$  [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(www.)?.*(-|.)?key+word(-|.).*$  [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(www.)?.*(-|.)?key%20word(-|.).*$  [NC,OR]
RewriteCond %{HTTP_REFERER} keyword [NC,OR]
RewriteCond %{HTTP_REFERER} key+word [NC,OR]
RewriteCond %{HTTP_REFERER} key%20word [NC]
RewriteRule ^.* http://myurl.com [R=301,L]

最新更新