Snažím sa filtrovať niektoré roboty tak, že ich zablokujem v htaccess
#UniversalRules
SetEnvIfNoCase User-Agent ^$ bad_bot #leave this for blank user-agents
SetEnvIfNoCase User-Agent .*@.* bad_bot
SetEnvIfNoCase User-Agent .*bot.* bad_bot
Ale tieto pravidlá tiež blokujú dobré roboty, a tak som ich pridal ďalej
#Goodbots
SetEnvIfNoCase User-Agent .*google.* good_bot
SetEnvIfNoCase User-Agent .*bingbot.* good_bot #bing
A nakoniec blokovacie pravidlo -
Order Allow,Deny
Allow from all
Deny from env=bad_bot
Ale keď používam GoogleBot useragent (Googlebot / 2.1 (+http://www.googlebot.com/bot.html) Ja dostanem - 403 zakázané.
Čo je zle ?
odpovede:
1 pre odpoveď č. 1GoogleBot nastavuje obidve premenné prostredia; nastavenie premennej (good_bot
) nezruší iné premenné (bad_bot
). Môžete nastaviť jednu premennú a potom ju zrušiť:
#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
vidieť mod_setenvif odkaz na príklady. BrowserMatchNoCase
poskytuje rovnakú funkčnosť s kratšou syntaxou. A môžete odstrániť všetky .*
vo vašom regexu.