Wie Google die robots.txt-Spezifikation interpretiert
Die automatisierten Crawler von Google unterstützen das Protokoll zum Ausschluss von Robots (Robots Exclusion Protocol, REP). Das bedeutet, dass die Crawler von Google vor dem Crawlen die robots.txt-Datei der Website herunterladen und parsen, um zu ermitteln, welche Teile der Website gecrawlt werden dürfen. Das REP gilt nicht für Google-Crawler, die von Nutzern verwaltet werden (z. B. Feedabos), oder Crawler, die zur Verbesserung der Nutzersicherheit verwendet werden (z. B. für die Malwareanalyse).
Auf dieser Seite wird beschrieben, wie Google das REP interpretiert. Den ursprünglichen Standard findest du unter RFC 9309.
Was ist eine robots.txt-Datei?
Wenn du nicht möchtest, dass Crawler auf bestimmte Bereiche deiner Website zugreifen, kannst du eine robots.txt-Datei mit den entsprechenden Regeln erstellen. Eine robots.txt-Datei ist eine einfache Textdatei mit Regeln, die festlegen, welche Crawler auf welche Teile einer Website zugreifen dürfen. Die robots.txt-Datei für example.com könnte beispielsweise so aussehen:
# This robots.txt file controls crawling of URLs under https://example.com. # All crawlers are disallowed to crawl files in the "includes" directory, such # as .css, .js, but Google needs them for rendering, so Googlebot is allowed # to crawl them. User-agent: * Disallow: /includes/ User-agent: Googlebot Allow: /includes/ Sitemap: https://example.com/sitemap.xml
Wenn du mit robots.txt noch nicht vertraut bist, lies zuerst die Einführung zu robots.txt-Dateien. Weitere Informationen findest du in den Tipps zum Erstellen einer robots.txt-Datei.
Dateispeicherort und Gültigkeitsbereich
Die robots.txt-Datei muss, unter Berücksichtigung der unterstützten Protokolle, im Stammverzeichnis der Website abgelegt werden. Bei der URL für die robots.txt-Datei wird wie bei anderen URLs zwischen Groß- und Kleinschreibung unterschieden. Bei der Google Suche werden die Protokolle HTTP, HTTPS und FTP unterstützt. Unter HTTP und HTTPS rufen Crawler die robots.txt-Datei mit einer nicht konditionalen HTTP-GET
-Anforderung ab. Unter FTP verwenden Crawler den Standardbefehl RETR (RETRIEVE)
mit anonymer Anmeldung.
Die in der robots.txt-Datei enthaltenen Regeln gelten nur für den Host, auf dem sich die robots.txt-Datei befindet, das zugehörige Protokoll und die entsprechende Portnummer.
Beispiele für gültige robots.txt-URLs
Die folgende Tabelle enthält Beispiele für robots.txt-URLs und dafür, für welche URL-Pfade sie gültig sind. Spalte 1 enthält die URL einer robots.txt-Datei. Spalte 2 enthält Domains, auf die diese robots.txt-Datei angewendet würde, sowie Domains, auf die sie nicht angewendet würde.
Beispiele für robots.txt-URLs | |
---|---|
https://example.com/robots.txt |
Diese URL entspricht dem üblichen Schema. Sie gilt nicht für andere Subdomains, Protokolle oder Portnummern. Sie gilt für alle Dateien in allen Unterverzeichnissen auf demselben Host, mit demselben Protokoll und derselben Portnummer. Gültig für:
|
https://www.example.com/robots.txt |
Eine robots.txt-Datei in einer Subdomain gilt nur für die jeweilige Subdomain.
Gültig für:
Nicht gültig für:
|
https://example.com/folder/robots.txt |
Dies ist keine gültige robots.txt-Datei. Crawler suchen nicht in Unterverzeichnissen nach robots.txt-Dateien. |
https://www.exämple.com/robots.txt |
Die IDNs entsprechen ihren Punycode-Versionen. Weitere Informationen finden Sie in RFC 3492. Gültig für:
Nicht gültig für:
|
ftp://example.com/robots.txt |
Gültig für:
Nicht gültig für:
|
https://212.96.82.21/robots.txt |
Eine robots.txt-Datei, bei der eine IP-Adresse als Hostname verwendet wird, ist nur für das Crawlen genau dieser IP-Adresse als Hostname gültig. Sie gilt nicht automatisch für alle unter dieser IP-Adresse gehosteten Websites. Es ist allerdings möglich, dass die robots.txt-Datei von mehreren Domains gemeinsam genutzt wird. In diesem Fall steht sie auch unter dem gemeinsamen Hostnamen zur Verfügung.
Gültig für:
Nicht gültig für:
|
https://example.com:443/robots.txt |
Die standardmäßigen Portnummern (bei HTTP Gilt für:
Nicht gültig für:
|
https://example.com:8181/robots.txt |
robots.txt-Dateien auf nicht standardmäßigen Portnummern gelten nur für Inhalte, die über diese Portnummern zur Verfügung gestellt werden.
Gültig für:
Nicht gültig für:
|
Behandlung von Fehlermeldungen und HTTP-Statuscodes
Beim Anfordern einer robots.txt-Datei wirkt sich der HTTP-Statuscode der Serverantwort darauf aus, wie die Google-Crawler die robots.txt-Datei verwenden. In der folgenden Tabelle wird zusammengefasst, wie der Googlebot robots.txt-Dateien mit verschiedenen HTTP-Statuscodes behandelt.
Behandlung von Fehlermeldungen und HTTP-Statuscodes | |
---|---|
2xx (success) |
Bei HTTP-Statuscodes, die eine erfolgreiche Aktion signalisieren, verarbeiten die Google-Crawler die robots.txt-Datei in der Form, wie sie vom Server bereitgestellt wird. |
3xx (redirection) |
Google folgt mindestens fünf Weiterleitungs-Hops gemäß Definition im RFC 1945, beendet dann den Vorgang und geht von einem Google ignoriert logische Weiterleitungen in robots.txt-Dateien (Weiterleitungen per Frames, JavaScript oder Meta-Refresh). |
4xx (client errors) |
Die Google-Crawler behandeln alle |
5xx (server errors) |
Da der Server keine eindeutige Antwort auf die robots.txt-Anforderung von Google geben konnte, interpretiert Google die Serverfehler
Wenn du das Crawling vorübergehend aussetzen musst, empfehlen wir, für jede URL auf der Website den HTTP-Statuscode
Sollten wir feststellen, dass eine Website aufgrund fehlerhafter Konfiguration statt des Statuscodes |
Weitere Fehler | Eine robots.txt-Datei, die aufgrund von DNS- oder Netzwerkproblemen – z. B. Zeitüberschreitungen, ungültigen Antworten, zurückgesetzten oder unterbrochenen Verbindungen und HTTP-Chunking-Fehlern – nicht abgerufen werden kann, wird als Serverfehler eingestuft. |
Caching
Google speichert den Inhalt der robots.txt-Datei normalerweise bis zu 24 Stunden lang im Cache. Sollte die Aktualisierung der im Cache gespeicherten Version jedoch nicht möglich sein, beispielsweise aufgrund einer Zeitüberschreitung oder eines 5xx
-Fehlers, kann der Inhalt auch länger im Cache verbleiben. Die Antwort im Cache kann von verschiedenen Crawlern genutzt werden.
Google kann die Verweildauer im Cache entsprechend der Anweisung „max-age“ im HTTP-Headerfeld „Cache-Control“ erhöhen oder verringern.
Dateiformat
Die robots.txt-Datei muss eine UTF-8-codierte Nur-Text-Datei sein und die Zeilen müssen durch CR
, CR/LF
oder LF
getrennt sein.
Google ignoriert ungültige Zeilen in robots.txt-Dateien, einschließlich der Unicode-Byte Order Mark (BOM) am Anfang der robots.txt-Datei, und verwendet nur gültige Zeilen. Wenn die heruntergeladenen Inhalte statt aus robots.txt-Regeln aus HTML bestehen, versucht Google, die Inhalte zu parsen und Regeln zu extrahieren. Alles andere wird ignoriert.
Wenn die Zeichencodierung der robots.txt-Datei nicht UTF‑8 ist, kann es sein, dass Google Zeichen ignoriert, die nicht zum UTF‑8-Bereich gehören. Hierdurch können auch robots.txt-Regeln ungültig werden.
Google erzwingt für robots.txt-Dateien derzeit eine Höchstgrenze von 500 Kibibyte (KiB). Alles, was sich jenseits der maximalen Dateigröße befindet, wird ignoriert. Du kannst die Größe der robots.txt-Datei verringern, indem du Regeln zusammenfasst, die sonst zu einer übergroßen robots.txt-Datei führen. Platziere beispielsweise ausgeschlossenes Material in einem separaten Verzeichnis.
Syntax
Gültige robots.txt-Zeilen bestehen aus einem Feld, einem Doppelpunkt und einem Wert. Leerzeichen sind optional, werden aber empfohlen, um die Lesbarkeit zu verbessern. Leerzeichen am Anfang und Ende der Zeile werden ignoriert. Wenn du Kommentare hinzufügen möchtest, stelle dem Kommentar das Zeichen #
voran. Alle Zeichen nach dem Zeichen #
werden ignoriert. Das allgemeine Format ist <field>:<value><#optional-comment>
.
Google unterstützt die folgenden Felder (andere Felder wie crawl-delay
werden nicht unterstützt):
user-agent
: Gibt an, für welchen Crawler die Regeln gelten.allow
: Gibt einen URL-Pfad an, der gecrawlt werden darf.disallow
: Gibt einen URL-Pfad an, der nicht gecrawlt werden darf.sitemap
: Gibt die vollständige URL einer Sitemap an.
Die Felder allow
und disallow
werden auch als Regeln (oder Anweisungen) bezeichnet. Die Regeln werden immer im Format rule: [path]
angegeben, wobei [path]
optional ist. Standardmäßig gibt es keine Beschränkungen für das Crawlen durch die angegebenen Crawler. Regeln ohne [path]
werden von Crawlern ignoriert.
Der Wert [path]
gilt, falls angegeben, relativ zum Stammverzeichnis der Website, von der die robots.txt-Datei abgerufen wurde. Dabei werden dasselbe Protokoll, dieselbe Portnummer, derselbe Host und dieselben Domainnamen verwendet.
Der Pfadwert muss mit dem Zeichen /
beginnen, das die Stammebene kennzeichnet. Beim Wert wird zwischen Groß- und Kleinschreibung unterschieden. Weitere Informationen zur auf Pfadwerten basierenden URL-Übereinstimmung
user-agent
Die Zeile user-agent
gibt an, für welchen Crawler die Regeln gelten. Eine vollständige Liste der User-Agent-Strings, die du in deiner robots.txt-Datei verwenden kannst, findest du unter Google-Crawler (User-Agents).
Beim Wert der Zeile user-agent
wird nicht zwischen Groß- und Kleinschreibung unterschieden.
disallow
Die disallow
-Regel gibt Pfade an, auf die bestimmte Crawler nicht zugreifen dürfen. Diese Crawler sind in der user-agent
-Zeile für die Gruppe angegeben, in der sich die disallow
-Regel befindet.
Regeln ohne Pfad werden von Crawlern ignoriert.
Wenn Seiten nicht gecrawlt werden dürfen, kann Google deren Inhalt zwar nicht indexieren, aber die URL kann möglicherweise dennoch indexiert und ohne Snippet in den Suchergebnissen angezeigt werden. Informationen zum Blockieren der Indexierung
Beim Wert der disallow
-Regel wird zwischen Groß- und Kleinschreibung unterschieden.
Verwendung:
disallow: [path]
allow
Die allow
-Regel gibt Pfade an, auf die die angegebenen Crawler zugreifen dürfen. Falls kein Pfad angegeben ist, wird die Regel ignoriert.
Beim Wert der allow
-Regel wird zwischen Groß- und Kleinschreibung unterschieden.
Verwendung:
allow: [path]
sitemap
Google, Bing und andere größere Suchmaschinen unterstützen das Feld sitemap
in robots.txt (definiert auf sitemaps.org).
Beim Wert des Feldes sitemap
wird zwischen Groß- und Kleinschreibung unterschieden.
Verwendung:
sitemap: [absoluteURL]
Die Zeile [absoluteURL]
verweist auf den Speicherort einer Sitemap- oder Sitemap-Indexdatei.
Es muss sich um eine voll qualifizierte URL handeln, bei der das Protokoll und der Host angegeben sind. Die URL muss nicht URL-codiert sein. Sie muss sich auch nicht auf dem gleichen Host wie die robots.txt-Datei befinden. Du kannst mehrere sitemap
-Felder angeben. Das Sitemap-Feld ist an keinen bestimmten User-Agent gebunden. Es kann von allen Crawlern befolgt werden, sofern Crawling für das Feld zugelassen ist.
Beispiel:
user-agent: otherbot disallow: /kale sitemap: https://example.com/sitemap.xml sitemap: https://cdn.example.org/other-sitemap.xml sitemap: https://ja.example.org/テスト-サイトマップ.xml
Gruppierung von Zeilen und Regeln
Du kannst Regeln, die für mehrere User-Agents gelten, gruppieren, indem du für jeden Crawler die user-agent
-Zeile wiederholst.
Beispiel:
user-agent: a disallow: /c user-agent: b disallow: /d user-agent: e user-agent: f disallow: /g user-agent: h
In diesem Beispiel gibt es vier unterschiedliche Regelgruppen:
- Eine Gruppe für den User-Agent „a“.
- Eine Gruppe für den User-Agent „b“.
- Eine Gruppe für die User-Agents „e“ und „f“.
- Eine Gruppe für den User-Agent „h“.
Die technische Beschreibung einer Gruppe findest du in Abschnitt 2.1 des REP.
Reihenfolge der User-Agents
Für einen bestimmten Crawler gilt jeweils nur eine Gruppe. Die Google-Crawler bestimmen die richtige Regelgruppe, indem sie in der robots.txt-Datei diejenige Gruppe ermitteln, deren User-Agent am besten mit dem User-Agent des Crawlers übereinstimmt. Andere Gruppen werden ignoriert. Jeder nicht übereinstimmende Text wird ignoriert. Zum Beispiel sind sowohl googlebot/1.2
als auch googlebot*
gleichwertig mit googlebot
. Die Reihenfolge der Gruppen innerhalb der robots.txt-Datei spielt keine Rolle.
Wenn es für einen User-Agent mehr als eine bestimmte Gruppe gibt, werden alle Regeln aus den Gruppen, die für den bestimmten User-Agent gelten, intern zu einer einzelnen Gruppe zusammengefasst. Bestimmte User-Agent-Gruppen und globale Gruppen (*
) werden nicht kombiniert.
Beispiele
Übereinstimmung von user-agent
-Feldern
user-agent: googlebot-news (group 1) user-agent: * (group 2) user-agent: googlebot (group 3)
Die relevante Gruppe wird von den einzelnen Crawlern so bestimmt:
Befolgte Gruppe pro Crawler | |
---|---|
Googlebot-News |
googlebot-news befolgt Gruppe 1, da dies die spezifischste Gruppe ist.
|
Googlebot (Web) | googlebot befolgt Gruppe 3. |
Googlebot StoreBot |
Storebot-Google befolgt Gruppe 2, da es keine spezifische Storebot-Google -Gruppe gibt.
|
Googlebot-News (beim Crawlen von Bildern) |
Beim Crawlen von Bildern befolgt googlebot-news Gruppe 1.
googlebot-news crawlt die Bilder für Google Bilder nicht und befolgt daher nur Gruppe 1.
|
Otherbot (Web) | Andere Google-Crawler befolgen Gruppe 2. |
Otherbot (News) |
Andere Google-Crawler, die Nachrichteninhalte crawlen, aber nicht als googlebot-news zu erkennen sind, befolgen Gruppe 2. Auch wenn ein Eintrag für einen ähnlichen Crawler besteht, gilt dieser nur bei genauer Übereinstimmung.
|
Gruppierung von Regeln
Wenn eine robots.txt-Datei mehrere Gruppen enthält, die für einen bestimmten User-Agent relevant sind, werden die Gruppen von den Google-Crawlern intern zusammengeführt. Beispiel:
user-agent: googlebot-news disallow: /fish user-agent: * disallow: /carrots user-agent: googlebot-news disallow: /shrimp
Die Crawler gruppieren die Regeln intern nach dem User-Agent. Beispiel:
user-agent: googlebot-news disallow: /fish disallow: /shrimp user-agent: * disallow: /carrots
Andere Regeln als allow
, disallow
und user-agent
werden vom robots.txt-Parser ignoriert. Das bedeutet, dass das folgende robots.txt-Snippet als eine Gruppe behandelt wird und daher sowohl user-agent
a
als auch b
von der Regel disallow: /
betroffen sind:
user-agent: a sitemap: https://example.com/sitemap.xml user-agent: b disallow: /
Bei der Verarbeitung der robots.txt-Regeln ignorieren die Crawler die Zeile sitemap
.
Beispielsweise würden die Crawler das vorherige robots.txt-Snippet so interpretieren:
user-agent: a user-agent: b disallow: /
Auf Pfadwerten basierende URL-Übereinstimmung
Google stellt anhand des Pfadwerts in den allow
- und disallow
-Regeln fest, ob eine Regel für eine bestimmte URL einer Website gilt. Hierzu wird die Regel mit der Pfadkomponente der URL verglichen, die der Crawler abrufen möchte.
Zeichen im Pfad, die keine 7‑Bit-ASCII-Zeichen sind, können als UTF‑8-Zeichen oder als durch ein Escapezeichen (Prozentzeichen) gekennzeichnete UTF‑8-codierte Zeichen gemäß RFC 3986 eingeschlossen werden.
Google, Bing und andere größere Suchmaschinen unterstützen eine eingeschränkte Form von Platzhaltern für Pfadwerte. Diese Platzhalterzeichen sind:
*
gibt 0 oder mehr Instanzen eines beliebigen Zeichens an.$
kennzeichnet das Ende der URL.
In der folgenden Tabelle siehst du, wie sich die verschiedenen Platzhalterzeichen auf das Parsen auswirken:
Übereinstimmungen von Beispielpfaden | |
---|---|
/ |
Jedes Stammverzeichnis und jeder URL auf einer niedrigeren Ebene stimmt mit dem Platzhalter überein. |
/* |
Gleichbedeutend mit / . Der nachgestellte Platzhalter wird ignoriert. |
/$ |
Nur das Stammverzeichnis stimmt überein. Alle URLs auf einer niedrigeren Ebene sind für das Crawling zulässig. |
/fish |
Jeder Pfad stimmt überein, der mit Übereinstimmungen:
Nicht-Übereinstimmungen:
|
/fish* |
Gleichbedeutend mit Übereinstimmungen:
Nicht-Übereinstimmungen:
|
/fish/ |
Sämtliche Inhalte im Ordner Übereinstimmungen:
Nicht-Übereinstimmungen:
|
/*.php |
Jeder Pfad stimmt überein, der Übereinstimmungen:
Nicht-Übereinstimmungen:
|
/*.php$ |
Jeder Pfad stimmt überein, der mit Übereinstimmungen:
Nicht-Übereinstimmungen:
|
/fish*.php |
Jeder Pfad stimmt überein, der Übereinstimmungen:
Nicht-Übereinstimmungen:
|
Reihenfolge der Regeln
Beim Abgleichen von robots.txt-Regeln mit URLs verwenden Crawler die Regel, die gemessen an der Länge des Regelpfads am spezifischsten ist. Bei widersprüchlichen Regeln, einschließlich Regeln mit Platzhaltern, verwendet Google die am wenigsten restriktive.
Die folgenden Beispiele zeigen, welche Regeln von Google-Crawlern auf eine bestimmte URL angewendet werden.
Beispielsituationen | |
---|---|
https://example.com/page |
allow: /p disallow: /
Anwendbare Regel: |
https://example.com/folder/page |
allow: /folder disallow: /folder
Anwendbare Regel: |
https://example.com/page.htm |
allow: /page disallow: /*.htm
Anwendbare Regel: |
https://example.com/page.php5 |
allow: /page disallow: /*.ph
Anwendbare Regel: |
https://example.com/ |
allow: /$ disallow: /
Anwendbare Regel: |
https://example.com/page.htm |
allow: /$ disallow: /
Anwendbare Regel: |