1

大家好,我一直在学习使用 SetEnvIfNoCase User-Agent和通配符的通配符方法,
但是使用下面的示例。如果用户代理与通配符匹配,则仅提供 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 错误页面。

4

2 回答 2

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]
于 2013-11-05T11:09:21.683 回答
0

RewriteCond指令可以按服务器变量过滤,包括环境变量,如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]
于 2013-11-05T10:34:18.190 回答