Robots.txt

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

In der Datei robots.txt können Sie angeben, welches Verhalten von Such-Robots Sie auf Ihrer Seite wünschen.

Beachten Sie: Es ist mit dieser Technik nicht möglich, Webseiten vor dem Zugriff durch Robots oder Personen zu schützen. Sie können lediglich das Erscheinen in den Suchergebnissen steuern.
Beachten Sie: Es besteht keinerlei Garantie, dass sich Suchmaschinen an die Verbote in der robots.txt halten. Die überwiegende Mehrheit der Robots moderner Suchmaschinen berücksichtigt das Vorhandensein einer robots.txt, liest sie aus und befolgt die Anweisungen. Robots, die mit bösen Absichten das Web durchsuchen, halten sich vermutlich nicht daran.
Empfehlung: Falls Sie Ihre Inhalte auf Apachoiden Webservern vor unberechtigtem Zugriff schützen möchten, können Sie dies auch mit einer .htaccess-Datei tun.
Webserver/htaccess/Zugriffskontrolle.

Allgemeines

Im sogenannten Robots-Exclusion-Standard-Protokoll ist geregelt, wie Sie mithilfe einer Datei robots.txt das Verhalten von Suchmaschinen-Robots auf Ihrer Domain beeinflussen können. Dieses Protokoll ist auch ohne RFC inzwischen zu einem Quasi-Standard gewachsen.

Zwar lässt sich auch in einzelnen HTML-Dateien mit Hilfe eines Meta-Tags für Suchmaschinen die Verwertung der Seite festlegen, doch das betrifft eben nur die einzelne HTML-Datei und maximal alle darin durch Verweise erreichbaren Seiten, nicht jedoch andere Ressourcen wie z. B. Bilder. In einer zentralen robots.txt können Sie dagegen unabhängig von der Datei- und Verweisstruktur Ihres Web-Projekts festlegen, welche Regeln für Verzeichnisse und Verzeichnisbäume gelten sollen. Da es an einem geschriebenen RFC fehlt, wird die Interpretation der robots.txt und deren Syntax von den Robotern nicht immer einheitlich gehandhabt. Die zusätzliche Verwendung von Meta-Tags in HTML-Dateien ist daher in Fällen der unerwünschten Indexierung durch den Robot zu empfehlen, falls der Robot die robots.txt nicht oder nicht richtig interpretiert hat.

Speicherort

Die robots.txt (es kann nur maximal eine solche Datei pro (Sub-)Domain geben) muss unter diesem Namen (alle Buchstaben klein geschrieben) im Wurzelverzeichnis der Web-Dateien der Domain abgelegt werden. Für die Domain example.org lautet der URI folglich http://example.org/robots.txt. Nur so kann sie von Suchmaschinen-Robots, die das Projekt aufsuchen, gefunden werden. Das bedeutet, dass Sie die Technik der robots.txt nur nutzen können, wenn Sie eine eigene Domain haben, nicht aber bei Webspace-Angeboten, wo Sie lediglich ein Homepage-Verzeichnis auf einem Server erhalten, ohne an das Wurzelverzeichnis der Domain zu kommen.

Die robots.txt ist eine reine Textdatei und kann mit jedem Texteditor bearbeitet werden.

Aufbau einer robots.txt

robots.txt
# robots.txt zu http://www.example.org/ User-agent: UniversalRobot/1.0 User-agent: mein-Robot Disallow: /quellen/dtd/ User-agent: * Disallow: /fotos/ Disallow: /temp/ Disallow: /fotoalbum.html
Im ersten Datensatz wird den Robots UniversalRobot/1.0 und mein-Robot untersagt, Daten aus dem Verzeichnis /quellen/dtd/ und allen Unterverzeichnissen zu indizieren.

Im zweiten Datensatz wird allen Robots verboten, die beiden Unterverzeichnisse /fotos/ und /temp/ auszulesen. Zudem wird der Zugriff auf die Datei fotoalbum.html verboten.

Die erste Zeile ist lediglich eine Kommentarzeile. Kommentare werden durch ein Gatterzeichen # eingeleitet und können auch in der Zeile beginnen.

Eine robots.txt besteht aus Datensätzen (records), welche wiederum grundsätzlich aus zwei Teilen bestehen. Im ersten Teil wird angegeben, für welche Robots (User-agent) die nachfolgenden Anweisungen gelten. Im zweiten Teil werden die Anweisungen selbst notiert. Die Anweisungen bestehen darin, den zuvor bestimmten Robots etwas zu verbieten (Disallow).

Jede Zeile eines Datensatzes beginnt mit einem der zwei erlaubten Schlüsselwörter User-agent oder Disallow. Dahinter folgt, durch ein Doppelpunkt und Leerzeichen getrennt, die zugehörige Angabe. Zwischen den Datensätzen wird eine Leerzeile notiert.

User-agent

Innerhalb eines Datensatzes muss zunächst mindestens eine Zeile mit User-agent: beginnen. Dahinter ist immer nur eine Angabe möglich. Falls Sie mehr als einen bestimmten Robot ansprechen möchten, müssen Sie mehrere Zeilen untereinander notieren, die mit User-agent: beginnen – so wie im ersten Datensatz des obigen Beispiels.

Bei User-agent: ist entweder der Platzhalter * (Asterisk) erlaubt, was so viel bedeutet wie „alle Robots“, oder der Name eines bestimmten Robots, dessen Namen Sie allerdings kennen müssen. Zwischen Groß- und Kleinschreibung wird nicht unterschieden. Mehr als ein Datensatz für alle Robots ist nicht erlaubt.

Zu Beachten ist, dass Suchmaschinenbetreiber mehrere spezialisierte Robots betreiben mit unterschiedlichen User-agent-Kennungen. Beispielsweise hat Google einen auf Bilderindexierung spezialisierten Bot Googlebot-Image[1].

Disallow

Unterhalb der Zeilen, die mit User-agent: beginnen, werden die Zeilen notiert, die mit Disallow beginnen. Die Angaben dazu werden dann von den Robots beachtet, die im gleichen Datensatz mit User-agent spezifiziert wurden. Leerzeilen innerhalb eines Datensatzes sind nicht erlaubt.

Hinter jeder Zeile, die mit Disallow: beginnt, können Sie jeweils eine Pfadangabe notieren. Die Robots werden jeden Pfad auf Ihrer Seite, dessen Anfang mit dieser Pfadangabe übereinstimmt, nicht indizieren.

Die Anweisungen werden der Reihe nach von der ersten bis zur letzten Zeile verarbeitet. Der erste auf den zu prüfenden Pfad passende Eintrag gewinnt.

Disallow-Reihenfolge
User-agent: * Disallow: /fotos/ Disallow: /fotos/urlaub/
Der Eintrag für /fotos/urlaub/ ist überflüssig, da dieser Pfad bereits mit /fotos/ in der vorigen Zeile ausgeschlossen wurde.

Disallow: beschränkt Sie nicht auf ganze Verzeichnis- oder Dateinamen. Auch Teilstücke sind möglich, /bild passt (neben /bild selbst) auf /bild/urlaub genauso wie auf /bilder oder bild123.jpg. Achten Sie deshalb darauf, bei Verzeichnispfaden einen abschließenden Schrägstrich / zu notieren.

Platzhalter wie * oder *.* sind nur einigen Suchmaschinen bekannt und sollten deshalb vermieden werden.

Beispiele

keinem Suchmaschinen-Bot irgendetwas erlauben
User-agent: * Disallow: /
Mit / bestimmen Sie alle Daten des Wurzelverzeichnisses und aller Unterverzeichnisse.
mein-Robot von allen anderen Verboten ausschließen
User-agent: mein-Robot Disallow: User-agent: * Disallow: /
Durch eine fehlende Angabe hinter Disallow: wird alles erlaubt.

Erweiterungen des ursprünglichen Protokolls

Schon das ursprüngliche Protokoll hat lediglich empfehlenden Charakter, die hier vorgestellten Erweiterungen werden von Google, Microsoft und Yahoo! seit 2008 unterstützt.[1]

Reihenfolge der User-Agents

Ursprünglicherweise wurde die robots.txt streng von oben nach unten abgearbeitet. Deshalb sollten die Anweisungen für alle Robots (User-Agent: *) ganz am Ende der Aufzählung stehen. Zudem musste der Name eines User-Agents bis auf die Groß- und Kleinschreibung genau bekannt sein.

Die Angabe zum User-Agent stellt nur den Anfang des User-Agent-Strings dar, User-Agent: google ist also gleichbedeutend mit User-Agent: google*.

Auf einen Robot kann immer nur ein Datensatz der robots.txt angewendet werden. Der Robot muss also den für ihn zutreffenden Datensatz bestimmen, indem er den Datensatz mit der genauesten User-Agent-Angabe ermittelt, die noch eine Übereinstimmung ergibt. Alle anderen Datensätze werden ignoriert. Die Reihenfolge der Datensätze ist also nicht von Bedeutung.

Beispiel
User-Agent: * # Anweisungen 1 User-Agent: google # Anweisungen 2 User-Agent: google-news # Anweisungen 3
Ein Robot mit dem Namen googlebot akzeptiert die Anweisungen 2, google-news-europe Anweisungen 3; einer mit dem Namen MyGoogle akzeptiert lediglich die Angaben für alle Robots.

Allow

Im ursprünglichen Protokoll war die Möglichkeit, einzelne Dateien oder Verzeichnisse für die Indizierung zu erlauben, nicht vorgesehen.

Allow wurde 1996[2] eingeführt, um auch innerhalb von eigentlich gesperrten Pfaden einzelne Freigaben zu ermöglichen. Es ist nicht notwendig, Objekte, auf die kein anderer Eintrag der robots.txt passt, ausdrücklich freizugeben.

Beispiel
User-Agent: * Allow: /pics/public/ Disallow: /pics/
Das Verzeichnis mit dem Namen pics ist von der Indizierung ausgeschlossen; Bilder, die in den Suchergebnissen dennoch auftauchen dürfen, befinden sich in pics/public.
User-Agent: * Allow: /public/ Disallow: /
Hier ist die gesamte Domäne gesperrt, lediglich das Verzeichnis public ist den Suchmaschinenrobots zugänglich.

Zu beachten ist, dass seit jeher die Einträge der robots.txt der Reihe nach bis zum ersten passenden abgearbeitet wurden. Dementsprechend sind Allow-Einträge für zuvor bereits per Disallow ausgeschlossene Pfade eigentlich wirkungslos:

Beispiel
User-Agent: * Disallow: /pics/ Allow: /pics/public/
pics/public wird nicht indiziert, da in der Zeile davor ein Verbot für das übergeordnete pics/ ausgesprochen wurde.

Bei Google wurde vermutet, dass aufgrund dieser Vorgehensweise ungewollt Pfade von der Indizierung ausgeschlossen würden und änderte für den eigenen Index die Verarbeitungsreihenfolge: Es werden zuerst alle Allow-Einträge der Reihe nach geprüft, erst im Anschluss werden die Disallow-Einträge verarbeitet.

Da diese Abweichung nur bei Google dokumentiert ist und es für Google keinen Unterschied macht, sollte im Hinblick auf andere Suchmaschinen die Reihenfolge nach dem Schema Zeile für Zeile eingehalten werden.

Wildcards

Das erweiterte Protokoll kennt für die Pfadangaben zwei Platzhalterzeichen:

  • *: beliebig viele Zeichen
  • $: Zeilenende
Beispiel
User-agent: * Disallow: /priv*/ # alle Unterverzeichnisse, die mit "priv" beginnen Disallow: /*priv*/ # alle Unterverzeichnisse, die "priv" enthalten Disallow: /*.jpg$ # alle Dateien, die auf ".jpg" enden

Sitemap

Eine Sitemap enthält in maschinenlesbarer Form die Struktur Ihrer Webpräsenz.

Sie können den vollständigen URI der Sitemap in der robots.txt angeben. Im Gegensatz zur robots.txt braucht die Sitemap-Ressource nicht im Stammverzeichnis Ihrer Webpräsenz zu liegen, muss aber naürlich von Bots abrufbar sein.

Beispiel
Sitemap: https://example.com/sitemap.xml

von Google empfohlenes Vorgehen

Um sicherzustellen, dass bestimmte Seiten nicht von Google indexiert werden, funktioniert ein „Verbot“ via robots.txt nur sehr unzuverlässig. Wenn der Google-Bot die URL z. B. über eine externe Verlinkung zu sehen bekommt, greift er die Seite trotzdem ab.

Um zuverlässig zu verhindern, dass Seiten im Google-Index landen, muss in der entsprechenden Seite

<meta name="robots" content="noindex">

angegeben werden.

Um Seiten aus dem Google-Index zu entfernen, darf der Zugriff in der robots.txt nicht verboten und der noindex-Metatag muss gesetzt werden.[3]

Für nicht-HTML-Ressourcen ist dies jedoch nicht zielführend, da zum Beispiel eine PDF-Datei kein solches meta-Element enthalten kann. In diesem Fall kann das X-Robots-Tag verwendet werden.[4]

Beachten Sie: Diese Empfehlung stammt von Google für Google – Sie kann nicht 1:1 auf andere Suchmaschinen übertragen werden.

Quellen

  1. Google Webmaster-Zentrale Blog: Verbesserungen des Robots-Exclusion-Protokolls
  2. robotstxt.org: Erweiterter Entwurf 1996
  3. Hacker News: 20326445
  4. Google developer: robots meta tag

Siehe auch

Weblinks