通过 SetEnvIfNoCase 设置各种值不起作用
Setting various values by SetEnvIfNoCase is not working
我正在尝试通过在“.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 用户代理时 (Googlebot/2.1 (+http://www.googlebot.com/bot.html) 我得到 - 403 禁止。
怎么了?
GoogleBot 设置两个环境变量;设置变量 (good_bot
) 不会取消设置其他变量 (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
有关示例,请参见 mod_setenvif 参考。 BrowserMatchNoCase
以更短的语法提供相同的功能。您可以删除正则表达式中的所有 .*
。
我正在尝试通过在“.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 用户代理时 (Googlebot/2.1 (+http://www.googlebot.com/bot.html) 我得到 - 403 禁止。
怎么了?
GoogleBot 设置两个环境变量;设置变量 (good_bot
) 不会取消设置其他变量 (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
有关示例,请参见 mod_setenvif 参考。 BrowserMatchNoCase
以更短的语法提供相同的功能。您可以删除正则表达式中的所有 .*
。