Googles robots.txt-Erweiterung
Google versteht
zwei Erweiterungen
des von vielen als unzureichend bemängelten
robots.txt-Standards:
„*“ für beliebige Zeichenfolgen sowie den Ende-Anker „$“.
Im Gegensatz zum üblichen Standard, der keine Platzhalter erlaubt
und bei dem die Suchmuster grundsätzlich am Anfang verankert sind, lässt sich damit deutlich flexibler arbeiten.
Es wird möglich, bestimmte Dateiendungen oder sogar Skriptaufrufe mit
bestimmten Parametern von der Indizierung auszuschließen.
Wer mit regulären Ausdrücken
vertraut ist, mag sich vorstellen, dass „Disallow: /x“ auf den regulären Ausdruck
„^/x.*$“ oder „^/x“, was gleichbedeutend ist, abgebildet wird.
Beides trifft nur zu, wenn der Ausdruck auf den Anfang des Dateinamens passt, wobei nachfolgende Zeichen
egal sind. Google erweitert diesen Standard um „*“, was in der Sprache
der regulären Ausdrücke zu „.*“ wird,
und um die Möglichkeit, den Ende-Anker „$“ explizit anzugeben.
Im Stil einer Liste typischer Fehler möchte ich im Folgenden einen Einblick liefern, was die Google-Erweiterung kann und was nicht.
Keine Suchmaschine kennt Teilzeichenketten ohne Platzhalter.
Falsch:Die Suche nach Teilzeichenketten wird in dieser Form von keiner Suchmaschine unterstützt, da die Suchmuster immer nur auf den Beginn eines Dateinamens zutreffen können. Da außerdem jeder Dateiname zwangsläufig mit einem Schrägstrich beginnt, bewirkt das obige Beispiel normalerweise gar nichts.User-agent: * Disallow: mitgliederbereich
Manche Suchroboter ergänzen den fehlenden Schrägstrich am
Anfang automatisch, so dass das Muster dann wieder mit
„/mitgliederbereich“ identisch ist.
Auf Dateinamen, die diesen Begriff weiter hinten beinhalten,
trifft das Muster jedoch niemals zu.
Google unterstützt Platzhalter, um diesen Mangel zu beheben. Für alle anderen Suchmaschinen müssen alle denkbaren Anfänge explizit aufgelistet werden.
Richtig:User-agent: Googlebot Disallow: /*mitgliederbereich User-agent: * Disallow: /mein_mitgliederbereich Disallow: /pfad/mitgliederbereich Disallow: /beispiel/mitgliederbereich
Mit den Platzhaltern kann nur Google etwas anfangen.
Falsch:Platzhalter und Anker werden nur von Google verstanden. Alle anderen Suchmaschinen sollten damit nicht verwirrt werden.User-agent: * Disallow: /*/referrers Disallow: /geheim
Richtig:User-agent: Googlebot Disallow: /*/referrers User-agent: * Disallow: /geheim
Auch Google-Muster sollten mit „/“ beginnen.
Falsch:Der Dateiname sollte prinzipiell mit einem Schrägstrich beginnen. Dieser Schrägstrich repräsentiert das Stammverzeichnis der Domain. Da es keine Internetadresse der Form „User-agent: Googlebot Disallow: *.tar Disallow: *privat
http://www.example.comdatei.html“
und somit auch keinen Dateinamen der Form „datei.html“ geben kann,
kann es auch keine robots.txt-Zeile ohne Schrägstrich am Anfang geben.
Der Platzhalter „*“ macht die explizite Angabe des Schrägstriches zwar nicht
unbedingt erforderlich, es ist aus Gründen der Eindeutigkeit
jedoch sehr zu empfehlen.
Richtig:User-agent: Googlebot Disallow: /*.tar Disallow: /*privat
Google-Muster können statt mit „/“ auch mit „*/“ beginnen.
Falsch:Das Suchmuster im obigen Beispiel blockiert nur „User-agent: Googlebot Disallow: /*/referrers
/pfad/referrers“, „/a/referrers_sites“ etc.,
nicht jedoch „/referrers“.
Die Lösung, das Muster mit „*/“ beginnen zu lassen,
stellt die einzige Ausnahme von der Regel dar, dass Suchmuster mit einem
Schrägstrich als erstes Zeichen beginnen sollten.
Richtig:User-agent: Googlebot Disallow: */referrers
Platzhalter am Ende sind sinnlos.
Falsch:Der normale robots.txt-Standard ist bereits so definiert, dass die Suchmuster auch dann zutreffen, wenn im Dateinamen noch weitere Zeichen folgen. Der Stern am Ende bewirkt also nichts. Das Konstrukt „User-agent: Googlebot Disallow: /* Disallow: /privat/* Disallow: /geheim/*$
*$“ ist mit
einem einfachen „*“ am Ende identisch und somit
ebenfalls völlig wirkungslos.
Richtig:User-agent: * Disallow: / Disallow: /privat/ Disallow: /geheim/
Vergisst man das "$", wird aus einer "endet mit"-Suche eine "enthält"-Suche.
Falsch:Das Muster „User-agent: Googlebot Disallow: /*.mp3 Disallow: /privat/*.zip Disallow: /*.cgi
/*.mp3“ sucht nicht wie gewünscht nach Dateiendungen,
sondern nach dem Vorkommen des Textes „.mp3“ innerhalb des Dateinamens.
Es wird fälschlicherweise also auch „/mein.mp3-tutorial.html“ blockiert.
Dieses Verhalten kann allerdings auch gewünscht sein.
So soll beispielsweise „/skript.cgi?parameter=15“ auch dann blockiert werden,
wenn dahinter weitere Zeichen folgen.
Richtig:User-agent: Googlebot Disallow: /*.mp3$ Disallow: /privat/*.zip$ Disallow: /*.cgi
Nicht sorgfältig konstruierte Suchmuster blockieren zuviel.
Falsch:Das obige Suchmuster blockiert fälschlicherweise auch Dateinamen wie z.B. „User-agent: Googlebot Disallow: /*referrers
/meinereferrerstrings.html“ und „/referrers.html“, obwohl es nur
„/pfad/referrers“, „/a/referrers_sites“ etc. blockieren soll.
Das besondere hierbei ist, dass ein mit „/*/“ beginnendes Suchmuster
zwei Schrägstriche fordert, also nicht auf das Stammverzeichnis
„/referrers“ zutrifft.
Richtig:User-agent: Googlebot Disallow: /*/referrers
Quellen: