大家好,我一直在学习使用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错误页面。
答案 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]