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

按字符串/关键字referer.htaccess重定向,.htaccess,mod-rewrite,http-referer,.htaccess,Mod Rewrite,Http Referer,我正在尝试使用此.htaccess通过关键字或字符串重定向用户,但它似乎正在重定向所有用户,无论它是否包含关键字。我做错了什么?感谢您的帮助 RewriteEngine On RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)?keyword(-|.).*$ [NC,OR] RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)?key\+word(-|.).*$ [NC,OR] Rewrit

我正在尝试使用此.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]
还重写条件以阻止未解析RDN的主机。主机名与IP完全相同。这是一个坏的机器人足迹,我试图消除,但它似乎是捕捉和主机,如果它包含一个IP地址

 RewriteCond %{HTTP_HOST}::%{REMOTE_ADDR} ^(.+?)::\1$ [OR]
 RewriteCond %{REMOTE_HOST}::%{REMOTE_ADDR} ^(.+?)::\1$ [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]

只保留一个条件
RewriteCond%{HTTP|u REFERER}键(\%20|\+)?word[NC]
仍然具有相同的结果,它将重定向所有用户,而不管关键字是否存在。这是否意味着它必须满足所有条件,而不是仅满足1个条件?那个referer字符串必须包含所有变体?如果我不高兴,请纠正我wrong@affiliatex
标志的意思是,因为在您的上一个条件中有一个
,它的意思是“6个条件中的任何一个或空白”,无论出于什么原因,“空白”总是正确的,因此条件总是满足的。哦!!我完全误解了这一点,在条件结束时也是如此。好的,测试nowOk,它似乎在一个实时流量源上工作。我还在.htaccess中发现了另一个错误。我用这行代码筛选出RDN无法解析的主机。(见上文编辑)
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]