Technisches SEO zählt zu den Basics für klickstarke Google-Rankings. Eine elementare Maßnahme ist die Crawlability-Optimierung mittels robots.txt-Datei. In diesem Beitrag erfährst Du alles Wissenswerte zur robots.txt-Datei: Praxisbeispiele erklären, wie Du die Crawlability Deiner Website optimierst und welche Anweisungen dafür erforderlich sind. Es sind keine Programmierkenntnisse erforderlich.
Inhaltsverzeichnis
- Was ist die robots.txt-Datei?
- Ist die robots.txt für Suchmaschinen-Crawler verbindlich?
- Wozu dient die robots.txt?
- Wo befindet sich die robots.txt?
- Sollte eine robots.txt für Suchmaschinen angelegt werden?
- Wie wird die robots.txt bearbeitet?
- Wie ist die robots.txt aufgebaut?
- Allgemeine robots.txt-Anweisungen
- Fortgeschrittene Anweisungen
- robots.txt Generatoren
- robots.txt testen
- Schutz sensibler Daten mit .htaccess + .htpasswd
Was ist die robots.txt-Datei?
Die robots.txt ist ein Textdokument, das Anweisungen für Webcrawler (Bots, Spider, Robots) definiert, um den globalen Zugriff oder auf Teile einer Website zu beschränken. Die Datei befindet sich im Stammverzeichnis der Website, also im obersten Verzeichnis eines Hosts.
Ist die robots.txt für Suchmaschinen-Crawler verbindlich?
Das Robots Exclusion Standard-Protokoll sieht vor, dass alle Crawler die robots.txt vor der Verarbeitung der ersten Ressource einer Website aufrufen. Die meisten Crawler halten sich an das Robots Exclusion Standard-Protokoll und befolgen die Anweisungen.
Die robots.txt ist optional. Werden keine robots.txt-Anweisungen festgelegt, dürfen alle Ressourcen ohne Einschränkungen verarbeitet werden. Das ist aus SEO-Sicht ungünstig, weshalb die Verwendung einer robots.txt-Datei ratsam ist.
Wozu dient die robots.txt?
Mit der robots.txt legt man fest, welche Ressourcen, optional von welchem User-agent, nicht gecrawlt werden dürfen. Entweder um private Daten zu schützen, oder um die Crawlability zu optimieren.
Crawlability?
Suchmaschinen sind an Daten interessiert. Deshalb durchsuchen Suchmaschinen-Bots stetig das Internet, um neue und aktualisierte Inhalte zu erfassen. Inhalte die für Suchmaschinen nicht relevant sind (z. B. Warenkorb-Seite eines Shops) brauchen nicht gecrawlt werden, weil sie keine Mehrwerte für Suchmaschinen-Nutzer bieten. Werden ungewünschte Ressourcen vom Crawlen ausgeschlossen, können wichtige Inhalte schneller erfasst werden.
Die robots.txt dient dazu, die Crawlability zu optimieren. Ob eine crawlbare Ressource in den Suchmaschinen-Index aufgenommen wird, bestimmt das Robots Meta Tag.
Wo befindet sich die robots.txt?
Die robots.txt wird immer im Stammverzeichnis einer Domain abgelegt. Sie muss exakt so geschrieben sein: „robots.txt“ – in Kleinbuchstaben. Mit einem FTP Client (Beispiel) kann die Datei auf dem Webserver erstellt bzw. aktualisiert werden. Alle Anweisungen gelten nur für den Host.
Sollte eine robots.txt für Suchmaschinen angelegt werden?
Eindeutig: Ja. Google hat dazu in einem Webmaster-Video Stellung bezogen. Matt Cutts empfiehlt die Bereitstellung einer robots.txt-Datei:
Wie wird die robots.txt bearbeitet?
Die robots.txt ist eine Textdatei und kann mit jedem herkömmlichen Texteditor erstellt und bearbeitet werden. Das erwartete Dateiformat ist ein UTF-8 codiertes Textformat.
Wie oft sollte die robots.txt bearbeitet werden?
Die robots.txt wird von vielen Crawlern beachtet. Deshalb sollte die Datei nicht für ein temporäres Crawling-Verhalten ausgerichtet werden, zum Beispiel um ausgewählten Dokumenten kurzzeitig ein höheres Ranking-Gewicht zu verleihen. Besser ist es, die robots.txt zu aktualisieren, wenn der Bedarf besteht – zum Beispiel wenn Verzeichnisse erzeugt werden, deren Inhalte von Crawlern nicht verarbeitet werden sollen.
Wie ist die robots.txt aufgebaut?
Die robots.txt beinhaltet Datensätze (Anweisungen) und Kommentare. Dabei wird strikt zwischen Groß- und Kleinschreibung unterschieden. Kommentare werden durch ein #-Zeichen eingeleitet.
1 |
# Das ist ein Kommentar |
Datensätze enthalten verbindliche Anweisungen (Ausschlüsse oder Freigaben). Dabei wird zwischen drei Ergebniscodes unterschieden:
- full allow: Alle Inhalte dürfen gecrawlt werden
- full disallow: Keine Inhalte dürfen gecrawlt werden
- conditional allow: Die Anweisen bestimmen die Crawlbarkeit individuell
robots.txt-Anweisungen beginnen mit der Zeile:
1 |
User-agent: |
Mit „User-agent“ wird definiert, an welchen Crawler die Anweisungen adressiert sind. Der erste Buchstabe „U“ muss groß geschrieben sein.
1 |
User-agent: * |
Die obere Zeile sagt aus, dass die Ausschlüsse und Freigaben einer Anweisung von allen Bots beachtet werden müssen. Der Stern ist ein Wildchar – ein Platzhalter, der in diesem Fall alle Bots adressiert.
Anweisungen können auch an ausgewählte Crawler adressiert werden. Soll eine Anweisung zum Beispiel ausschließlich für den Googlebot gelten, beginnt sie mit:
1 |
User-agent: Googlebot |
Eine Liste bekannter Suchmaschinen-Bots bietet die Website robotstxt.org.
Die wichtigsten Suchmaschinen-Crawler
User-agent | Suchmaschine |
Googlebot | Google Suche + Google Mobile |
Googlebot-Mobile | Google Mobile for Feature Phones |
Googlebot-Image | Google Bildersuche |
Googlebot-Video | Google Videosuche |
Mediapartners-Google | Google (Mobile) AdSense |
Adsbot-Google | Google AdsBot |
Slurp | Yahoo! |
bingbot | MSNBot/bing |
MSNBOTMobile | MSN mobile |
Die Gültigkeit einer Anweisung kann auch für mehrere Crawler festgelegt werden:
1 2 3 |
User-agent: Googlebot User-agent: Googlebot-Image User-agent: Slurp |
Die Anweisung gilt für „Googlebot“, „Googlebot-Image“ und „Slurp“.
Sobald festgelegt ist, für welche/n Crawler eine Anweisung adressiert ist, werden im nächsten Schritt die Ausschlüsse (Disallow) und optional die Freigaben (Allow) notiert. Eine Anweisung kann mehrere Ausschlüsse und Freigaben enthalten.
Die Disallow-Anweisung leitet ein Ausschluss-Kriterium ein. Der erste Buchstabe „D“ muss groß geschrieben sein:
1 |
Disallow: |
Mit der Allow-Anweisung werden Freigaben erteilt. Der erste Buchstabe „A“ muss groß geschrieben sein. Nicht alle Crawler befolgen die Allow-Anweisung:
1 |
Allow: |
Das Kriterium einer Anweisung wird grundsätzlich hinter dem Doppelpunkt notiert, getrennt mit einem Leerzeichen. Pro Zeile darf nur ein Kriterium festgelegt werden.
Allgemeine robots.txt-Anweisungen
Kein Ausschluss für Crawler (full allow)
Darf eine Website ohne Einschränkungen von allen Crawlern verarbeiten werden, lautet die Anweisung:
1 2 |
User-agent: * Disallow: |
Ausschluss aller Crawler (Full Disallow)
Darf eine Website von keinem Crawler verarbeitet werden, lautet die Anweisung:
1 2 |
User-agent: * Disallow: / |
Durch das Slash-Zeichen hinter dem „Disallow:“ werden alle Inhalte von der Verarbeitung ausgeschlossen. Die Anweisung ist allgemein unter „Disallow all“ bekannt.
Ausgewähltes Verzeichnis und dessen Inhalt sperren
Soll ein ausgewähltes Verzeichnis und dessen Inhalte von der Verarbeitung durch Crawler ausgeschlossen werden, lautet die Anweisung:
1 2 |
User-agent: * Disallow: */verzeichnis-1/ |
In diesem Fall ist „verzeichnis-1“ inklusive aller Inhalte (Unterverzeichnisse, Dateien) für alle Crawler gesperrt. Das „*“ vor dem Verzeichnis drückt aus, dass die Anweisung auch gilt, wenn vor „/verzeichnis-1/“ ein Verzeichnis besteht, zum Beispiel: „/verzeichnis-0/verzeichnis-1/“
Der Slash hinter dem Verzeichnis ist wichtig. Wäre dieser nicht vorhanden (Disallow: */verzeichnis), würden alle URLs gesperrt werden, die „verzeichnis“ enthalten – Bilder, PDF-Dateien, etc.
Mehrere Verzeichnisse können nach folgendem Schema gesperrt werden:
1 2 3 4 |
User-agent: * Disallow: */verzeichnis-1/ Disallow: */verzeichnis-2/ Disallow: */verzeichnis-3/ |
Die Verzeichnisse „verzeichnis-1“, „verzeichnis-2“ und „verzeichnis-3“ sowie dessen Inhalte werden für alle Crawler gesperrt.
Nur ein ausgewähltes Verzeichnis sperren
Soll nur ein Verzeichnis und dessen Inhalte gesperrt werden aber nicht hierarchisch tieferliegende Verzeichnisse und Dateien, ist diese Anweisung hilfreich:
1 2 |
User-agent: * Disallow: */verzeichnis/$ |
Das Zeichen „$“ kennzeichnet das Ende der URL.
Verzeichnis und dessen Inhalte in einem gesperrten Verzeichnis freigeben
Soll ein Verzeichnis und dessen Inhalte in einem gesperrten Verzeichnis zur Verarbeitung freigegeben werden, ist das durch folgende Syntax möglich:
1 2 3 |
User-agent: * Disallow: */verzeichnis-1/ Allow: */verzeichnis-1/verzeichnis-2/ |
Die Disallow-Anweisung sperrt die Verarbeitung von „verzeichnis-1“. Durch die Allow-Anweisung wird „verzeichnis-2“ und dessen Inhalt in „verzeichnis-1“ freigegeben. Alle anderen Verzeichnisse und Inhalte in „verzeichnis-1“ bleiben gesperrt.
Datei in einem Verzeichnis sperren
1 2 |
User-agent: * Disallow: */verzeichnis-1/datei-1.jpg |
Die Datei „datei-1.jpg“ in „verzeichnis-1“ wird für alle Crawler gesperrt.
Datei in einem gesperrten Verzeichnis freigeben
Soll eine Datei in einem gesperrten Verzeichnis freigegeben werden, ist das durch diese Syntax möglich:
1 2 3 |
User-agent: * Disallow: */verzeichnis-1/ Allow: */verzeichnis-1/datei-1.jpg |
Die Datei „datei-1.jpg“ im gesperrten Verzeichnis „verzeichnis-1“ wird zur Verarbeitung für alle Crawler freigegeben.
Ausschluss von Dateitypen
Sollen bestimmte Dateitypen ausgeschlossen werden, ist folgende Syntax zielführend:
1 2 |
User-agent: * Disallow: /*.jpg$ |
Der Stern definiert eine beliebige Zeichenfolge. Mit „.jpg“ wird der Dateityp festgelegt – in diesem Fall alle Dateien vom Typ JPG. Das Dollar-Zeichen sagt aus, dass nach dem Dateityp kein weiteres Zeichen folgen darf.
Die Anweisung bedeutet: Kein Crawler darf Dateien vom Typ JPG verarbeiten. Das betrifft alle JPG-Dateien einer Website.
Fortgeschrittene Anweisungen
Die folgenden Anweisungen werden nicht von allen Crawlern interpretiert. Ich definiere die folgenden Beispiele für den Googlebot. Fortgeschrittene Anweisungen dürfen nicht mit anderen Regeln der Website kollidieren – etwa mit Canonical Tags.
Get-Parameter ausschließen
Oft erzeugen Parameter-URLs und Session-IDs internen Duplicate Content. Duplikate zu crawlen, würde die Crawlability unnötig verschlechtern. Deshalb ist es sinnvoll, sie von der Verarbeitung auszuschließen:
1 2 |
User-agent: Googlebot Disallow: /*? |
Der Googlebot darf keine URLs mit einem Fragezeichen verarbeiten.
Verzeichnisse sperren, die eine bestimmte Zeichenfolge enthalten
Unter Umständen kann es erforderlich sein, Verzeichnisse zu sperren, die eine bestimmte Zeichenfolge enthalten. Das ist mit folgender Syntax möglich:
1 2 |
User-agent: Googlebot Disallow: */privat*/ |
Der Googlebot darf kein Verzeichnis verarbeiten, das mit der Zeichenfolge „privat“ beginnt. Der Stern ist ein Wildchar und kann individuell eingesetzt werden.
Crawl-delay für Slurp und bingbot
Für die beiden User-agents Slurp und bingbot kann ein Crawl-Delay in Sekunden festgelegt werden. Sinnvoll ist das, um die Serverlast durch Crawler zu verringern:
1 2 |
User-agent: Slurp Crawl-delay: 60 |
Der Slurp-Robot darf nur aller 60 Sekunden ein Dokument auslesen.
Die Einstellung sollte gut kalkuliert werden, weil die Anzahl verarbeitbarer Dokumente drastisch gesenkt und negativ beeinflusst werden kann. Ein Crawl-delay von 60 Sekunden würde maximal 1.440 Seiten pro Tag zulassen (60 Sekunden = 1 Minute; 24h x 60min = 1.440). Websites mit mehreren Tausend Dokumenten wären dadurch zu stark begrenzt.
robots.txt Sitemap
Google empfiehlt: Websites mit über 10.000 Seiten sollen eine XML Sitemap bereit stellen, um eine hohe Crawlability zu gewährleisten. Der folgende Eintrag teilt allen Crawlern die Adresse der XML Sitemap mit:
1 |
Sitemap: https://www.beispiel-website.com/sitemap.xml |
Stellt eine Website mehrere XML-Sitemaps bereit, ist es empfehlenswert alle Sitemaps zeilenweise zu notieren. URL-Pfade werden immer absolut angegeben. Die Sitemap-Angabe wird von Google, Ask, Bing, Yahoo interpretiert und verarbeitet.
robots.txt Generatoren
Im Internet gibt es zahlreiche Anbieter von robots.txt Generatoren. Für die Erstellung einer einfachen robots.txt sind diese Generatoren durchaus empfehlenswert. Werden jedoch fortgeschrittene Anweisungen erforderlich, kommt ein robots.txt Generator laut meiner Erfahrung schnell an seine Grenzen.
- https://seo-ranking-tools.de/seo-tools/robots-txt-generator/
- http://tools.seobook.com/robots-txt/generator/
robots.txt testen
Zum testen und validieren einer robots.txt empfehle ich den robots.txt-Tester der Google Search Console. Dieser ist im Hauptmenü unter „Crawling“ zu finden. Damit lassen sich URL-Pfade individuell prüfen.
In meinem Blog Beitrag zum Thema robots.txt Tester stelle ich verschiedene Tools vor, um blockierte URLs zu identifizieren und zu testen.
Schutz sensibler Daten mit .htaccess + .htpasswd
Manche Crawler halten sich nicht an das Robots Exclusion Standard-Protokoll und beachten die Anweisungen der robots.txt-Datei nicht. Wer sensibler Daten auf einer Domain ablegt, dem empfehle ich einen Serverseitigen Schutz vor unerwünschten Zugriffen.
Eine einfache und effektive Methode für Apache Webserver ist die Verwendung eines .htaccess Passwortschutzes mit .htpasswd-Datei. Dieser Schutz lässt sich schnell und bequem mit kostenlosen Generatoren einrichten (hier oder hier). Voraussetzung ist ein FTP-Zugriff auf den Webserver.
Hi Jens,
schöne Zusammenfassung des Themas.
Ich hätte noch eine Ergänzung.
Google unterstützt inoffiziell auch den „noindex“-Befehl in der „robots.txt“. Das sieht dann z.B. so aus:
User-agent: Googlebot
Noindex: /verzeichnis/
Allerdings wird dies nicht von anderen Suchmaschinen unterstützt und gilt nur als „Notlösung“.
Viele Grüsse
Matthias
Bitte „noindex“ in der robots.txt nicht mehr benutzen, weil Google „noindex“ ab 01.09.2019 nicht mehr unterstützen wird. (Quelle)