Platzhalter für Bots in Apache

2286
Adrian Gschwend

Ich betreibe eine Site, die Subversion & TRAC für viele Open Source-Projekte bereitstellt. Dies funktioniert mit einer Ausnahme ziemlich gut: Viele Suchmaschinen kümmern sich nicht darum robots.txtund DoS den Webserver mit vielen parallelen Anforderungen in TRAC, zum Beispiel die TRAC-Changesets als tar / zip.

Da ich viele TRAC-Repositorys unter einer Domain betreibe, verwende ich Platzhalter in robots.txt, was laut Google erlaubt sein sollte:

User-agent: * Disallow: /*/changeset Disallow: /*/browser Disallow: /*/log 

Leider kümmert sich sogar Google nicht darum, obwohl die Webmaster-Tools bestätigen, dass die spezifischen URIs ignoriert werden sollen. Und ja, ich habe es ihnen erzählt, aber es war ihnen egal. Sicherlich kümmern sich andere wie Yandex auch nicht darum.

Plan B ist also, sie in der Apache-Konfiguration auszusperren. Ein Freund von mir gab mir ein paar Tipps, wie das geht:

<Directory /foo/bar> SetEnvIf User-Agent Yandex BlockYandex=1 SetEnvIf User-Agent METASpider BlockMETASpider=1 SetEnvIf User-Agent Mail.ru BlockMailru=1 Order allow,deny Allow from all Deny from env=BlockYandex Deny from env=BlockMETASpider Deny from env=BlockMailru </Directory> 

Jetzt versuche ich herauszufinden, ob ich so etwas auch mit Platzhaltern machen kann, sodass ich nicht <Directory>für jedes Repository einen Abschnitt erstellen muss. Ich habe <LocationMatch>in den Apache-Dokumenten gefunden, aber ich bin nicht sicher, ob ich das als Ersatz für verwenden kann <Directory>.

Also meine Frage ist, kann ich das verwenden <LocationMatch>und / oder hat jemand bessere Ideen zum Filtern der Bots auf Serverseite?

2

1 Antwort auf die Frage

1
Adrian Gschwend

(Ich wollte es wie von der Website empfohlen beantworten, aber die Bearbeitung der Frage führte zu einer Fehlermeldung.)

Ich habe mir bei Apache.org mehr Dokumentation angesehen und selbst herausgefunden:

 # get rid of the bots which are too stupid to respect robots.txt <LocationMatch "/[^/]+/(browser|changeset|log)"> BrowserMatchNoCase googlebot ImBot BrowserMatchNoCase Yandex ImBot BrowserMatchNoCase bingbot ImBot Order allow,deny Allow from all Deny from env=ImBot </LocationMatch> 

Verweise:

Testen Sie mit einer User-Agent-Switcher-Erweiterung für Ihren Browser. Aufgrund von Noob-Einschränkungen kann ich keine weiteren Links dazu posten :) Meine Website ist unter svn.netlabs.org für diejenigen, die es live ausprobieren möchten.

Wenn Sie die Lösung selbst finden, sollte sie als solche Antwort gepostet werden. Es sollte nicht in die Frage eingearbeitet werden. grawity vor 13 Jahren 0
Ah ok also habe ich es richtig gemacht :) danke! Adrian Gschwend vor 13 Jahren 0