.htaccess url 重写立即停止 bingbot

.htaccess url 重写立即停止 bingbot

我想停止宾博完全并且立即。

我想使用 .htaccess 中的 mod_rewrite 来做到这一点。

我有这些规则……

Options +FollowSymLinks 
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT}  ^bingbot/.*         [OR]
RewriteCond %{HTTP_USER_AGENT}  ^Bingbot/.*         [OR]
RewriteRule ^(.*)$ http://go.away/                  [L]

...但它们不起作用。我在日志中看到的是这种类型的条目...

msnbot-207-46-195-224.search.msn.com - - [11/Jul/2011:15:07:27 -0700] "GET /index.php?url_mainnav=13&url_subnav=131&url_expand=394,949,4631&url_startrow=110 HTTP/1.1" 403 502 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"

...我已经尝试了 HTTP_USER_AGENT 正则表达式的多种变体,但我无法得到我想要的响应,因此我推测我使用的规则的实际结构不正确。

有人能给我指明正确的方向吗?

顺便说一句,我知道这种事情在 iptables 等中完成得更好,我也知道 robots.txt。它是共享主机,所以我无法控制 iptables,而且我不想等待 bingbot 重新读取 robots.txt 的六/八个小时。


事情正在向前发展。考虑到答案,我将重写规则更改为:

Options +FollowSymLinks 
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT}  ^bingbot/.*             [OR,NC]
RewriteCond %{HTTP_USER_AGENT}  .*bingbot/.*            [OR]
RewriteCond %{HTTP_USER_AGENT}  .*Bingbot/.*            [OR]
RewriteRule ^(.*)$ http://go.away/                      [L]

bingbot 的条目仍出现在访问日志中,但这让我意识到(我认为)我误解了日志中显示的 HTTP 响应代码。看来 403 是“禁止”,所以也许我的规则正在做我想要的事情(告诉 bingbot 离开),但请求被记录了?我以为日志不会反映被 mod_rewrite 推开的东西?如果有人能发表评论,我会很感兴趣,因为我仍然不能 100% 地确定我是否摆脱了 bingbot 的访问。

答案1

嗯,你的 RewriteCond 中的正则表达式要求用户代理从...开始bingbot。这就是正则表达式中的 ^ 的作用。

^bingbot/.*

由于用户代理(从您的日志示例来看)不是以此开头,因此它不会匹配并跳过规则。

"Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"

删除 ^ 就可以工作了,尽管我还没有测试过。

提示:您可以使用 [NC] 选项使匹配不区分大小写,从而从 RewriteConds 中删除重复项。

RewriteCond %{HTTP_USER_AGENT}  ^bingbot/.*         [OR,NC]

相关内容