通过SetEnvIfNoCase设置各种值不起作用

时间:2018-01-05 13:41:17

标签: php apache .htaccess setenvif

我试图通过像htaccess这样阻止它们来填充一些机器人

#UniversalRules
SetEnvIfNoCase User-Agent ^$ bad_bot #leave this for blank user-agents
SetEnvIfNoCase User-Agent .*\@.* bad_bot
SetEnvIfNoCase User-Agent .*bot.* bad_bot

但是这个规则也阻止了好机器人,所以我在下面添加了

#Goodbots
SetEnvIfNoCase User-Agent .*google.* good_bot
SetEnvIfNoCase User-Agent .*bingbot.* good_bot #bing

最后是阻止规则 -

Order Allow,Deny
Allow from all
Deny from env=bad_bot

但是当我使用GoogleBot useragent(Googlebot / 2.1(+ http://www.googlebot.com/bot.html)时,我得到了 - 403被禁止。

怎么了?

1 个答案:

答案 0 :(得分:1)

GoogleBot 设置两个环境变量;设置变量(bad_bot)不会取消设置其他变量(#UniversalRules SetEnvIfNoCase User-Agent ^$ bad_bot SetEnvIfNoCase User-Agent .*\@.* bad_bot SetEnvIfNoCase User-Agent .*bot.* bad_bot #Goodbots SetEnvIfNoCase User-Agent .*google.* !bad_bot SetEnvIfNoCase User-Agent .*bingbot.* !bad_bot )。您可以设置一个变量并在之后取消设置:

BrowserMatchNoCase

有关示例,请参阅mod_setenvif参考。 .*使用较短的语法提供相同的功能。您可以删除正则表达式中的所有{{1}}。