/ / Nastavenie rôznych hodnôt pomocou SetEnvIfNoCase nefunguje - php, apache, .htaccess, setenvif

Nastavenie rôznych hodnôt pomocou funkcie SetEnvIfNoCase nefunguje - php, apache, .htaccess, setenvif

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ď č. 1

GoogleBot 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.