通过htaccess使用Regex检测HTTP referer中的空格

时间:2014-06-25 02:27:49

标签: regex apache .htaccess mod-rewrite referer

我在日志文件中注意到一些欺骗性的引用者。我试图将其与正则表达式匹配,然后重定向或阻止。

到目前为止我已经

RewriteCond %{HTTP_REFERER} ([ \t]) [NC]
RewriteRule ^.* http://myurl.com [R=301,L]

匹配

http://www.google.com/aclk?sa=L&ai=CQMQnRhqqU9ayMoGGpgO0qIGwBenqjYYF- (iPad; CPU OS 5_1_1 like Mac OS X)fapm58BnLGFBQgAEAEgpobwF1DtwvevBGDJnu6LyKSsFMgBAaoEHk_Ql4Qm9ik5AliEnvP6NXHVLTEajDmGtvndNK_0RYAFs_j-GNgGBIAH-Y3hL5AHAw&sig=AOD64_3a7OrHry1krDs0QEW5MAsdgRg_Ng&rct=j&q=&ved=0CB8Q0Qw&adurl=http://noneya.com

我已经过测试,它可以在http://regex101.com/r/zN6iY7运行,但无法使用http://htaccess.madewithlove.be/

来触发规则

要清楚,我想通过htaccess使用正则表达式检测引用网址中的任何空格,如果是这样,则重定向到另一个页面。

提前致谢。

1 个答案:

答案 0 :(得分:1)

所以你检查过referer字段是否包含空格?那就足够了:

RewriteEngine On
RewriteCond %{HTTP_REFERER} \s
RewriteRule ^ http://myurl.com [R=301,L]

确保它位于.htaccess

DOCUMENT_ROOT