Die robots.txt

geschrieben am in der Kategorie SEO von

Wer denkt, Suchmaschinen wandern ziellos durch das Internet und schauen sich wahllos Seiten an, die dann auch bei den 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 des Google Algorithmus‘, jedoch weiß niemand, wie genau er funktioniert. Da aber selbst dieser – der wahrscheinlich ausgereifteste – Algorithmmus nicht mit dem menschlichen Verständnis für Sinn oder Unsinn mithalten kann, gibt es die Möglichkeit, den 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, die Suchmaschine ein Stück weit zu steuern, ist das Bereitstellen einer Datei mit dem Namen „robots.txt“.

Was ist eine robots.txt?

Mit der Bezeichnung Robot/Crawler/Spider/Bot ist im Zusammenhang mit dem Internet ein Programm gemeint, welches nach und nach und immer wieder möglichst die gesamte Menge der Informationen im WWW überprüft, bewertet und speichert – also das Grundinstrument von Suchmaschinen wie Google, Yahoo, Bing! und Co.

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 zustimmen, der Betreiber der Webseite ist auf die Kooperationsbereitschaft des Webcrawlers angewiesen. Vermutlich halten sich zumindest die großen Suchmaschinen an die Anweisungen der robots.txt, zumindest sind mir zu diesem Zeitpunkt keine anderweitigen Vorkommnisse bekannt.

Natürlich gibt es aber auch Crawler, welche nicht die Inhalte der robots.txt auslesen, bzw. diese nicht beachten. Das sind nicht immer dubiose Anbieter, die solche Bots schicken. Viele SEO- und Backlink- Tools halten sich nicht an den Standard um eine ausführliche Datenbasis zu erhalten. Gerade aber ein Backlinkchecker, der im Grunde genommen die Backlinks checkt, damit man diese Daten für die Suchmaschinenoptimierung der eigenen Webseite nutzen kann, muss („kurz gedacht“) keine Daten verwerten, die für die großen Suchmaschinen selbst gar nicht zugänglich sind.

Aufbau und Funktionen im Detail

Wie schon erwähnt, ist die robots.txt eine schlichte Textdatei, die man mit einem beliebigen Editor (z.B. Notepad) erstellen kann und im ANSI 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 z.B. nicht, dass die Suchmaschine Yahoo! einen bestimmten Teil der Seite indexiert, so muss man deren Crawler mit dem Namen Slurp direkt ansprechen und ihm das mitteilen. Will man für alle Crawler ein Verzeichnis 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 meine Webseite z.B. nicht bei Yahoo! indexiert werden, so spricht man deren Crawler Slurp folgendermaßen an:

                                               User-agent: Slurp

                                               Disallow: /verzeichnis/

Eine umfangreiche Liste verschiedener Webcrawler findet man z.B. hier. 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. die Groß- und Kleinschreibung spielen 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 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 nichts verboten wird.

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: *

                                               Disallow: /

                                               Allow: /verzeichnis/

Will man unterschiedliche Anweisungen für verschiedene Bots erteilen (das wird in den meisten Fällen so sein), so werden die Regeln in Blöcke gefasst. 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 bis 4 jeweils das Verzeichnis verzeichnis12 bzw. verzeichnis34 gesperrt. Alle anderen Crawler haben Zugriff auf die gesamte Webpräsenz. Tipp: 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: *

                                               Disallow:/verzeichnis/

                                               Allow: /verzeichnis/ausnahme.html

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 auch noch weitere Möglichkeiten, um die größten Bots zu steuern. So lassen sich z.B.

  • URLs mit Parametern ausschließen (Disallow: /*?),
  • man kann die Lesegeschwindigkeit des Crawlers vorgeben, damit er die Performance der Seite nicht negativ beeinflusst (Crawl-delay: 120). Hier wird angegeben, wie viele Sekunden der Crawler warten muss, bis er die nächste Seite auslesen darf.
  • 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 diese 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 Ausdrücke, wie die gerade aufgezählten.

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.

Webmaster-Tools

Test der Dateil über Webmaster-Tools

Etwas ausführlicher sollte der Test der Datei erfolgen. Dazu eignen sich meines Erachtens am besten die Google Webmaster Tools. Dort findet man, falls schon eine robots.txt existiert, unter Crawling >> Blockierte URLs die URL zur Datei und auch die Inhalte im oberen Fenster. Im unteren Fenster kann man URLs eingeben, welche dann vom Google-Bot getestet werden können. Der Clou an diesem Tool: man kann im oberen Fenster des Tools den Inhalt der robots.txt anpassen und dann testen, ob eine oder mehrere bestimmte URLs von der robots.txt abgefangen werden. Das erleichtert die Erstellung erheblich, da man nicht den üblichen Weg über Download – Bearbeitung – Upload – Test gehen muss. Achtung: Die Änderungen, die im oberen Fenster getätigt werden, werden nicht in der robots.txt umgesetzt. Hat man das passende Schema gefunden, so muss man die „richtige“ robots.txt noch aktualisieren.

 

Update 2015: Mittlerweile stellt Google direkt einen robots.txt-Tester in der Search Console bereit. Dort wird die aktuell hinterlegte robots.txt dargestellt. Man kann direkt im Browser Änderungen an der Textdatei vornehmen und die Einstellungen dann an beliebigen URLs der Seite testen, ob diese von den aktuellen Einstellungen betroffen sind. Auch können die Einstellungen für verschiedene Bots getestet 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 dann 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 (nicht „müssen“) z.B. das Impressum oder eine Loginseite zählen. Auch diese sollten dann für alle Crawler gesperrt werden.
  • 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, einen Passwort-Schutz z.B. via .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, da sich dann interne (ggf. auch externe) Linkpower auf nicht erreichbaren Seiten sammelt und von dort nicht weiterfließen kann, da Crawler keinen Zugriff haben

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 hier die Strukturen der Seiten immer ähnlich sind, kann man getrost auf eines der angebotenen Beispiele zurückgreifen. Hier findet man  eine Möglichkeit inkl. Erläuterung.

Auch für Magento und Co. lassen sich genügend Beispiele im Netz finden.

Alternativen

Ich hatte als erste Alternative schon die Verschlüsselung der Inhalte mittels .htaccess Passwortschutz genannt. Das ist eine sehr radikale Art,  Bots von der Webseite auszuschließen, allerdings auch die effektivste. Hier muss man abwägen, ob ein gänzlicher Ausschluss der Crawler sinnvoll ist, da auch Nutzer ohne Logindaten keinen Zugang zu den Inhalten haben.

Eine weitere Alternative ist das lokale Vergeben von Regeln über die Meta Tags. Eine Jede URL besitzt Meta Tags die z.B. Title, Description, Meta Keywords usw. beinhalten. Auch hier kann man Regeln für die Crawler hinterlegen. Diese haben dann allerdings eine andere Form.  Hier kann man dann mittels nofollow Attribut festlegen, dass die Crawler die Seite nicht ansehen sollen und mittels noindex vermeidet man eine Indexierung der URL. Neben diesen beiden Standard Tags gibt es auch noch weitere Crawler spezifische Lösungen wie z.B. noarchive oder nosnippet beim Google Bot. Hier gibt es Details dazu.

Interessante Links

Im letzen Punkt möchte ich noch ein paar hilfreiche Links präsentieren:

Update Juli 2015:
Ende Juli 2015 verschickte das Google Search Console Team 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 diese Forderungen mit folgenden zwei Zeilen in der robots.txt zu lösen.
Allow: .js
Allow: .css
Falls die robots.txt nicht den Crawler blockt, sollten die x-robots-tags und die htaccess-Datei überprüft werden. Auch dort können Blockierung eingetragen sein.

Wenn diese Nachricht an eine WordPress-Seite ging, sollte anstelle der Standard WordPress robots.txt eine eigene hinterlegt werden.

Stefan ist seit November 2011 Teil des Projecter-Teams. Mit seinem Interesse an der „Maschine“ Internet ist er dort auch gut aufgehoben. Stefan ist ursprünglich als Werkstudent auf der Suche nach Praxiserfahrung zu Projecter gekommen und hat im Oktober 2011 sein Bachelor-Studium der Angewandten Mathematik abgeschlossen.

Einen Kommentar schreiben

* Pflichtfelder