SetEnvIfNoCase重定向

时间:2013-11-05 10:10:10

标签: regex apache .htaccess mod-rewrite

大家好,我一直在学习使用SetEnvIfNoCase User-Agent和通配符的通配符方法 但是,如果useragent与通配符匹配,则使用下面的示例。仅提供403错误页面 但我想要的是重定向"用户代理"到另一个网站,如黑洞或垃圾邮件页面 使用像RewriteRule ^(.*)$ http://send junk to here/

这样的东西
SetEnvIfNoCase User-agent "(B2|Bac|Bad|Bag|Bai|Bast|Batch|Bing|Bite|Bla|Blex)" bad_bot=yes
#
Order Allow,Deny
Allow from All
Deny from env=bad_bot

我可以替换Deny from env=bad_bot以使其重定向到所需网站,而不是提供403错误页面。

2 个答案:

答案 0 :(得分:1)

DOCUMENT_ROOT/.htaccess文件中包含这样的重写规则:

RewriteEngine On

RewriteCond  %{HTTP_USER_AGENT} B2|Bac|Bad|Bag|Bai|Bast|Batch|Bing|Bite|Bla|Blex [NC]
RewriteRule  !^spam/ http://officeofstrategicinfluence.com/spam/ [L,NC,R=302]

更新::作为回应OP的评论

  

1- adding a new line of filters do i need to change the [NC] ? and 2- if i wanted to add a single word by itself do i still use RewriteCond %{HTTP_USER_AGENT} ^word [NC]? with the ^

试试这段代码:

RewriteCond  %{HTTP_USER_AGENT} B2|Bac|Bad|Bag|Bai|Bast|Batch|Bing|Bite|Bla|Blex [NC,OR]
RewriteCond  %{HTTP_USER_AGENT} foo|bar|etc [NC]
RewriteRule  !^spam/ http://officeofstrategicinfluence.com/spam/ [L,NC,R=302]

答案 1 :(得分:0)

RewriteCond directive可以按服务器变量进行过滤,包括bad_bot等环境变量。语法是:

  

%{ENV:variable},其中变量可以是任何环境变量,是   也提供。这是通过内部Apache httpd结构查找的   和(如果没有找到)来自Apache httpd服务器的getenv()   过程

但它也可以通过HTTP标头过滤,因此您不需要您的env变量:

RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla
RewriteRule  ^/$                 /homepage.max.html  [L]

RewriteCond  %{HTTP_USER_AGENT}  ^Lynx
RewriteRule  ^/$                 /homepage.min.html  [L]

RewriteRule  ^/$                 /homepage.std.html  [L]