Die robots.txt: Wozu ist sie da?

Wer denkt, Suchmaschinen wandern ziellos durch das Internet und schauen sich wahllos Seiten an, die dann als Suchergebnissen angezeigt werden, der irrt. Suchmaschinen verwenden sehr komplexe Algorithmen, um zu entscheiden, ob eine Seite indexiert werden soll oder nicht.

Jeder kennt das Mysterium um den Google Algorithmus, jedoch weiß niemand, wie genau er funktioniert. Da aber selbst dieser – der wahrscheinlich ausgereifteste – Algorithmus nicht mit dem menschlichen Verständnis für Sinn oder Unsinn mithalten kann, gibt es für Webseitenbetreiber die Möglichkeit, Suchmaschinen Hinweise zu geben. Diese Hinweise werden in den meisten Fällen sehr dankend angenommen und beachtet, was in der Folge Vorteile im Bereich der Suchmaschinenoptimierung einbringt. Eine Möglichkeit, zu steuern, wohin sich die Suchmaschine auf einer Webseite bewegt, ist das Bereitstellen einer Datei mit dem Namen robots.txt.

Was ist eine robots.txt?

Damit Google und Co. wissen, welche Inhalte es im Internet und auf den einzelnen Websites gibt, nutzen sie sogenannte Crawler, die alle Inhalte erassen. Da diese Webcrawler in vielen Fällen nicht willkürlich alle Inhalte der eigenen Webseite einsehen und indexieren sollen, wurde der Robots Exclusion Standard eingeführt. Dies ist eine Übereinkunft zwischen Webseite und Crawler, bei der der Crawler unter anderem zustimmt, sich an die Anweisungen in der Datei robots.txt zu halten. Wichtig ist: Der Crawler muss dem Standard nicht einhalten, sodass der Betreiber der Webseite auf die Kooperationsbereitschaft des Webcrawlers angewiesen ist. Grundsätzlich halten sich die Crawler der großen Suchmaschinen jedoch an diese Anweisungen. Bei Crawlern von verschiedenen SEO- und Analysetools kann dies anders aussehen.

Aufbau und Funktionen im Detail

Grundsätzlich ist die robots.txt eine schlichte Textdatei, die man mit einem beliebigen Editor (z. B. Notepad++) erstellen kann und im UTF-8-Format speichert.

Im Textdokument können dann die einzelnen Regeln für die Bots aufgestellt werden. Hier ist wichtig, dass für jede Zeile klar ist, welche Crawler von der Regelung betroffen sind. Will man ein Verzeichnis für alle Crawler verbieten, so nutzt man * als Wildcard:

                                               User-agent: *

                                               Disallow: /verzeichnis/

Will man das Verzeichnis nur für einen einzelnen Crawler ausschließen, so muss dieser direkt mit Namen angesprochen werden. Soll ein Verzeichnis z. B. nicht bei Google indexiert werden, so spricht man deren Crawler Googlebot folgendermaßenan:

                                               User-agent: Googlebot

                                               Disallow: /verzeichnis/

Eine umfangreiche Liste verschiedener Webcrawler zeigt, wie viele Crawler auf diese Weise angesprochen und ausgeschlossen werden können. Klickt man die einzelnen Bots an, findet man beim Aufruf der Bot-URL meist auch den richtigen Hinweis, wie man den Crawler in der robots.txt ansprechen muss. Tipp: Die User Agents sind non case-sensitive, d. h. Groß- und Kleinschreibung spielt keine Rolle bei der Bezeichnung der Crawler. Anders ist es bei der Bezeichnung des Pfades: Hier muss dringend auf Groß- und Kleinschreibung geachtet werden.

Will man nicht nur ein Unterverzeichnis vor der Indexierung durch alle Bots bewahren, sondern die gesamte Webseite, so wählt man den folgenden Eintrag:

                                               User-agent: *

                                               Disallow: /

Hier ist der Slash wichtig. Wird er nicht gesetzt, so bedeutet die Anweisung, dass die Webseite zur Indexierung freigegeben ist.

Möchte man auf der ganzen Seite nur ein bestimmtes Verzeichnis für die Bots freigeben, so kann man z. B. folgendes Schema wählen:

                                               User-agent: *

                                               Allow: /verzeichnis/

                                               Disallow: /

Häufig möchte ein Webmaster unterschiedliche Anweisungen für verschiedene Bots erteilen. Diese Regeln werden in Blöcke zusammengefasst. Dabei steht ein Block für eine Gruppe an Bots mit den gleichen Regeln. In der Praxis sieht das dann so aus:

                                               User-agent: Bot1

                                               User-agent: Bot2

                                               Disallow: /verzeichnis12/

                                               User-agent: Bot3

                                               User-agent: Bot4

                                               Disallow: /verzeichnis34/

                                               User-agent: *

                                               Disallow:

Hier wird für die Bots 1 und 2 jeweils das Verzeichnis verzeichnis12 bzw. für Bot 3 und 4 das Verzeichnis verzeichnis34 gesperrt. Alle anderen Crawler haben Zugriff auf die gesamte Webpräsenz. Wichtig: Nennt man einen Crawler explizit, so wird er lediglich die Anweisungen seines Blocks befolgen. Alle anderen Regeln werden nicht beachtet.

Will man einzelne Seiten ausschließen, so kann man das mittels der folgenden Anweisung bewerkstelligt:

                                               User-agent: *

                                               Disallow: /seite.html

Neben der Anweisung Disallow existiert auch noch die Anweisung Allow. Mit dieser wird es möglich, einzelne Dateien oder Unterverzeichnisse eines ausgeschlossenen Verzeichnisses freizuschalten. Anwendungsbeispiel:

                                               User-agent: *

                                               Allow: /verzeichnis/ausnahme.html

                                               Disallow: /verzeichnis/

Bei dieser Variante dürfen alle Crawler auf die Seite ausnahme.html zugreifen, obwohl sie sich in einem Verzeichnis befindet, welches für die Robots blockiert wurde.

Mit den einfachen Regeln der Mengenlehre lassen sich hier verschiedene Lösungen für ein und dasselbe Problem finden. In jedem Falle sollte man die Konstruktionen gründlich testen, bevor man die robots.txt endgültig online stellt. Dazu gleich mehr.

Neben dem Sperren und Entsperren von Verzeichnissen und Unterseiten bestehen weitere Möglichkeiten, die größten Bots zu steuern. So lassen sich z. B.

  • URLs mit Parametern ausschließen (Disallow: /*?)
  • Dateitypen ausschließen (Disallow:/*.jpg$)
  • Lesegeschwindigkeiten für die Crawler von Yahoo! und Microsoft vorgeben, damit sie die Performance der Seite nicht negativ beeinflussen (Crawl-delay: 120). Hiermit wird angegeben, wie viele Sekunden der Crawler warten muss, bis er die nächste Seite auslesen darf. Google folgt diesem Befehl nicht.
  • Außerdem kann man in der robots.txt den Ort der Sitemap angeben (Sitemap: http://www.webseite.de/verzeichnis/sitemap.xml). Das ist gerade dann wichtig, sollte sich die Sitemap nicht im Rootverzeichnis der Seite befinden.

Wichtig: In der robots.txt ist es nicht möglich, herkömmliche Ausdrucksweise mit regulären Ausdrücken zu verwenden. Erlaubt sind nur wenige Ausnahmen. Zum Beispiel zählen $ und * zu den regulären Ausdrücken, werden aber von den großen Suchmaschinen erkannt.

Technische Umsetzung, Implementierung und Test der robots.txt

Zugegebenermaßen ist die Bezeichnung Implementierung hier schon fast ein wenig hochgegriffen. Denn nach dem Erstellen der Datei und Speicherung mit dem Namen robots.txt besteht der Prozess der Implementierung darin, die Datei in das Rootverzeichnis der betroffenen Domain auf dem FTP Server zu laden. Mehr gehört gar nicht dazu.

Die robots.txt kann man mit Hilfe eines Test-Tools direkt in der Google Search Console überprüfen. Google ruft hierbei die aktuelle robots.txt auf und zeigt bei einem Test an, durch welche Regel eine bestimmte URL ausgeschlossen sein würde. Zudem können hier direkt Änderungen an der robots.txt ausprobiert werden, damit die gewünschten Zielseiten ein- oder ausgeschlossen werden. Die Änderungen müssen dann manuell in die robots.txt übernommen werden.

In welchen Fällen sollte man URLs in der robots.txt ausschließen

Nun steht immer noch die Frage im Raum, welche URLs man eigentlich über die robots.txt ausschließen sollte bzw. welche Anwendungsfälle es gibt. Hier also ein paar Beispiele:

  • Die Webseite befindet sich noch im Aufbau und soll noch nicht indexiert werden. Hier müssen sämtliche Crawler von der gesamten Webseite ausgeschlossen werden.
  • Inhalte bestimmter Verzeichnisse und URLs sind „unwichtig“ für die Leserschaft und sollen deshalb nicht im Index der Suchmaschinen landen. Zu diesen Seiten können zum Beispiel Login-Seiten oder der Warenkorb bei einem Shop gehören. Auch Ergebnisseiten einer internen Suchfunktion müssen nicht unbedingt im Index landen.
  • Bestimmte Inhalte sollen der Öffentlichkeit nicht zugänglich gemacht werden, da sie vertrauliche Informationen beinhalten. An dieser Stelle kann man zwar die robots.txt dafür nutzen, damit die Inhalte nicht in den großen Suchmaschinen landen, sicher sind sie dennoch nicht. Hier ist es besser, z. B. einen Passwort-Schutz durch .htaccess einzurichten.
  • Da mehrere URLs den gleichen Inhalt haben, soll nur eine bestimmte durch die Crawler besucht werden. So tritt man der Duplicate Content Problematik entgegen. Allerdings ist davon abzuraten, Duplicate Content mittels robots.txt zu bekämpfen. Interne (ggf. auch externe) Linkpower sammelt sich auf nicht erreichbaren Seiten sammelt und kann von dort nicht weiterfließen, da Crawler keinen Zugriff haben. Eine bessere Lösung ist die Verwendung von Canonical-Tags.

Mit Sicherheit gibt es noch viele weitere Anwendungsfälle. Diese sollen aber für den Moment genügen.

robots.txt in Content Management Systemen

WordPress wäre nicht WordPress, wenn nicht eine umkomplizierte Lösung für dieses Thema bereitstehen würde. Beziehungsweise halten hier viele andere eine passende Lösung bereit. Das Netz ist voller möglicher Varianten für die robots.txt einer WordPress-Seite. Da sich die Strukturen der Seiten sehr ähneln, kann man getrost auf eines der angebotenen Beispiele zurückgreifen.

Auch für weitere Anbieter wie Magento lassen sich genügend Beispiele im Netz finden.

In welchen Fällen sollte man Dateien in der robots.txt erlauben

Ein Beispiel für eine Situation, in der der Zugriff auf Dateien explizit erlaubt werden sollte, stammt aus dem Juli 2015. Das Google-Search-Console-Team verschickte zu dieser Zeit Warnungen an sehr viele Webmaster, dass der Googlebot nicht auf CSS- und JS-Dateien zugreifen kann. In der Nachricht wurde sogar gewarnt, dass eine weitere Blockierung dieser Dateien zu schlechteren Rankings führen kann.


Am leichtesten ist, die Forderung nach der Crawlbarkeit der beiden Dateitypen mit folgenden zwei Zeilen in der robots.txt umzusetzen:


Allow: .js
Allow: .css


Liegt die Schuld nicht beim der robots.txt, sollten die X-Robots-Tags und die htaccess-Datei überprüft werden. Auch dort können Blockierung eingetragen sein.

Auch WordPress-Seiten waren von der Warnung betroffen. Die Lösung ist hier anstelle der Standard-WordPress-robots.txt eine eigene zu hinterlegen.

Abonnieren
Benachrichtige mich bei
guest
2 Kommentare
Inline Feedbacks
View all comments
trackback
PR Wochenrückblick KW46 – Die Highlights der Woche | PR - Popularity Reference GmbH
vor 10 Jahren

[…] Auch in dieser Woche gab es wieder nützliches SEO-Basiswissen: Projecter beschrieb die Funktionsweise der robots.txt. Suchmaschinen können mithilfe dieser Datei gesteuert werden, was in den meisten Fällen positiv wirkt. Die schlichte Textdatei kann mit einem beliebigen Editor, wie z. B. Notepad, erstellt werden. Darin können einzelne Regeln für Suchmaschinen-Bots aufgestellt werden. Möchte man z. B. ein bestimmtes Verzeichnis auf der Website für alle Crawler verbieten, so wird das „*“ als Wildcard genutzt. Welche Regeln und Anweisungen es gibt, wie die technische Umsetzung und Implementierung aussieht, erfahrt ihr in: Die robots.txt. […]

trackback
Crawling-Fehler in der Google Search Console – Was zu tun ist - Projecter GmbH
vor 7 Jahren

[…] verwehrt wird. Für gewöhnlich entstehen solche Suchmaschinensperren durch Blockaden via robots.txt oder .htaccess. Werden diese Seiten dann beispielsweise mittels follow-Link referenziert, entsteht […]