Was ein SEO über die robots.txt wissen sollte
Allerdings gibt es einige Details und Eigenheiten der robots.txt zu beachten.
Über die robots.txt allgemein
Wer sich in das der robots.txt zugrunde liegende Robots Exclusion Standard Protokoll einlesen möchte, findet auf der Wikipedia einige Infos. Ich werde mich hier auf die für SEOs wichtigen Regeln und Tipps beschränken. Und das geht ganz allgemein los:
- Die robots.txt ist immer auf der obersten Verzeichnisebene zu finden, ihre URL lautet also immer: http://[www.domain.de]/robots.txt.
- Die Angaben für Verzeichnisse und Dateien starten immer direkt hinter der Domain. Also immer mit einem Slash („/“) und dann den Pfad.
- Es gibt die Anweisungen “disallow” und “allow”. Da “allow” die Regel ist, muss diese in der Regel nicht verwendet werden. Außerdem kümmern sich nur die “Großen” Robots um dieses “allow”.
- Groß- und Kleinschreibung spielt eine Rolle.
- Ein Stern („*“) ist ein Platzhalter. Wenn etwa alle Verzeichnisse die mit “privat” beginnen, gemeint sind, sieht das so aus: privat* (Beispiel unten). Auch das können nicht alle Bots, und man darf nur bei den großen damit rechnen, dass das klappt.
- Da auch Zeichen und damit auch der Punkt interpretiert werden, muss es möglich sein, dass das Ende einer Dateierweiterung markiert wird. Das erfolgt mit dem Dollarzeichen („$“).
- Mehrere Regeln werden von einer Leerzeile voneinander getrennt.
Es gibt auch viele Tipps und Tricks, wie man mit der robots.txt ungeliebte Bots sperrt. Crawler, die einen nerven, die die Performance der Seite fressen oder gar Inhalte klauen. Allerdings sorgt auch eine noch so lange Liste „scrapböser” Bots in der robots.txt nicht für Ruhe auf dem Server. Denn wer Inhalte „scrapt“, wird sich kaum an eine Disallow-Anweisung in einer kleinen Text-Datei halten. Da sorgt dann nur ein Eintrag in der .htaccess für wirklich gesperrte Seiten.
Der Aufbau robots.txt
Ein Eintrag in der robots.txt besteht immer aus zwei Teilen. Zunächst wird angegeben, für welchen User Agent (Robot) die Anweisung gilt, danach wird die Anweisung gegeben:
User-agent: Googlebot
Disallow: /cms/
Das bedeutet: Der Webcrawler von Google sollte das Verzeichnis /cms/ nicht crawlen.
Sollten sich überhaupt kein Robot mit diesem Verzeichnis beschäftigen würde die Anweisung so lauten, der Stern steht als Platzhalter für alle Robots:
User-agent: *
Disallow: /cms/
Darf die gesamte Seite nicht gecrawlt werden – etwa auf einer Testinstallation vor einem Relaunch – würde die Anweisung wie folgt lauten. Der Schrägstrich bedeutet, dass kein Verzeichnis gecrawlt werden soll:
User-agent: *
Disallow: /
Soll eine einzelne Seite oder ein einzelnes Bild nicht gecrawlt werden, wird der Eintrag in der robots.txt so aussehen:
User-agent: Googlebot
Disallow: /datei-name.html
Disallow: /images/bild.jpg
Spezielle Aufgaben in der robots.txt
Es geht ja häufig nicht darum, komplette Seiten aus dem Index zu hauen, sondern um feinere Aufgaben. Hierfür gibt es verschiedene Anweisungen für die verschiedenen Robots.
User-agent: Googlebot-Image
Disallow: /
Es können auch z.B. alle Bilder eines bestimmten Formats gesperrt werden:
User-agent: Googlebot-Image
Disallow: /*.jpg$
Eine Besonderheit ist das Schalten von AdWords-Anzeigen. Diese dürfen nur auf Seiten erscheinen, die gecrawlt werden können. Sollen sie aber trotzdem nicht in den organischen Index, muss man zwei Einträge machen. Einer dafür, dass die Seiten *nicht* gecrawlt werden – und danach eine Ausnahme für den AdWords-Crawler machen:
User-agent: Mediapartners-Google
Allow: /
User-agent: *
Disallow: /
Soll ein gesamtes Verzeichnis gesperrt, aber ein Teilverzeichnis darin erlaubt werden, würde die Anweisung so aussehen. Allerdings sollte das “Allgemeine” vor dem “Speziellen” stehen:
User-agent: *
Disallow: /shop/
Allow: /shop/magazin/
Man kann auch alle Seiten mit einem Parameter vor dem Crawlen sperren. Wobei hier gut abzuklären ist, ob bei diesen Seiten nicht der Canonical-Tag besser wäre. Beide Angaben würden sich gegenseitig stören. Wenn es aber passt, wäre diese Anweisung korrekt. Damit würden alle URLs mit einem Fragezeichen nicht gecrawlt werden.
User-Agent: Googlebot
Disallow: /*?
Mit einer speziellen Anweisung kann man die Lesegeschwindigkeit beeinflussen. Das funktioniert allerdings nur bei Yahoo! Slurp und msnbot. Im Beispiel darf nur alle 120 Sekunden eine Seite gelesen werden:
Crawl-delay: 120
Wichtig: Gibt man Anweisungen für spezielle Bots, müssen in diesem Bereich alle vorherigen, allgemeineren Anweisungen wiederholt werden.
Die wichtigsten Crawler / Bots
Crawler | User-Agents |
---|---|
Googlebot für Websuche | Googlebot |
Googlebot für News | Googlebot-News (den gibt es als Bot nicht mehr – aber Googlebot hält sich an dessen Anweisungen. |
Googlebot für Bilder | Googlebot-Image |
Googlebot für Videos | Googlebot-Video |
Google Mobile | Googlebot-Mobile |
Google Mobile AdSense | Mediapartners-Google oder Mediapartners |
Google AdSense | Mediapartners-Google oder Mediapartners |
Yahoo | Slurp |
Yahoo Mobile | YahooSeeker/M1A1-R2D2 |
MSNbot / Bing | bingbot |
MSN für Mobile | MSNBOT_Mobile |
Internet Archive | ia_archiver |
Spezialfall “Mobile-Site”
Mit der robots.txt kann man auch eine Mobile Site von einer Desktop-Site “trennen”. Und zwar, indem man die mobilen Bots auf der Desktop-Variante sperrt und die “normalen” Bots auf der Mobile Site. Allerdings würde ich das immer auch mit entsprechenden Sitemaps kombinieren.
Desktop-Site:
User-Agent: Googlebot-Mobile
Disallow: /
Mobile Site:
User-Agent: Googlebot
Disallow: /
Hier können auch jeweils noch die Allow-Angaben gemacht werden – aber das ist wohl nicht wirklich notwendig. Natürlich können auch noch weitere Mobile-Bots verwendet werden.
Weitere Hinweise für die robots.txt
- Darf der Crawler eine Seite bzw. ein Verzeichnis nicht crawlen, heißt das nicht, dass die Seiten daraus auf keinen Fall in den Google-Index kommen. Denn wenn Links darauf zeigen, wird Google die Seite in den Index nehmen – er kennt sie ja. Aber er wird sie nicht crawlen. Also wird er zum Beispiel auch die Anweisung “noindex” gar nicht sehen.
- Getestet werden kann die robots.txt auch in den Google Webmaster Tools. Dort, im Bereich “Status” und “Blockierte URLs”, kann eine Anweisung direkt mit Beispiel-URLs gecheckt werden.
- Mit dem Firefox Addon Roboxt sieht man jederzeit den Status einer Seite in der robots.txt (https://addons.mozilla.org/de/firefox/addon/roboxt/)
- Zusätzlich kann man eine oder mehrere Sitemaps in der robots.txt verlinken. Die Eintragung würde so aussehen: Sitemap: http://[www.meine-domain.de]/sitemap.xml
- Zulässig sind auch Kommentarzeilen, die mit “#” beginnen.
Bitte: Alles in Maßen und mit Ruhe!
Immer dann, wenn wir bei einem Kunden auf eine richtig ausführliche und lange robots.txt stoßen, werde ich misstrauisch. Ich frage dann: Gibt es jemanden, der mir jede Anweisung darin wirklich erklären kann? Ist dies nicht der Fall, kann es gut sein, dass eigentlich tolle Landingpages vom Crawling ausgenommen werden. Die beste Strategie ist dann, mit folgender robots.txt zu starten und jede Anweisung in Ruhe diskutieren:
User-agent: *
Disallow:
Denn diese Anweisung heißt: Willkommen, Robots, schaut euch meine Seite an…
Ursprünglich publiziert bei SEO-Book.de
Über den Autor
Eric Kubitz (Twitter) ist Geschäftsführer der Contentmanufaktur GmbH, einem Dienstleister im Bereich SEO- und Content-Optimierung. Im SEO Book bloggt er über diese Themen.
Ist es sinnvoll durch die robots.txt z.B. mein Impressum vom Crawling auszuschliessen? V.a. wenn es sich um eine kleine Webseite handelt, in der möglicherweise die Textmenge im Impressum mehr als 50% des Gesamt-Textes einnimmt?
Hallo Martin,
nein, das würde ich nicht machen. Wenn das Impressum nicht im Index erscheinen sollte, wäre der Mta-Tag „noindex“ angesagt. Aber ich sehe auch dafür keinen Grund.
Die Frage ist allerdings, warum du auf deiner Seite außer auf dem Impressum kaum Text hast? Das macht es Google wirklich schwer, deine Seite zu ranken. Wofür dann auch?
eric
Danke für diesen ausführlichen und interessanten Artikel!
Christian
@Martin Das Impressum würde ich immer indexieren lassen und mit einem wichtigen Keyword wieder auf die Startseite verlinken! Warum? Meistens ist das Impressum eine der intern am stärksten verlinkten Seiten. Solche starken Seiten sollte man nutzen, statt mit dem noindex „wegzuschmeißen“. Außerdem validiert Google oft anhand des Impressums den Trust einer Webseite. Bleibt der Crawler draußen, bleibt auch diese Validierung aus.
@Eric Toller Artikel! Allerdings fehlt mir noch ein wenig zum Thema aussprerren von Bots, da die robots.txt nur eine Liste ist, an die sich die Bots halten können, aber nicht müssen.
Ich hab da mal die Gunst der Stunde ergriffen und den Artikel ein wenig erweitert ;) Wen es interessiert: http://mizine.de/internet/umleitung-fur-gewisse-robots-und-crawler/
Wofür genau steht das Dollar-Zeichen bei …
Disallow: /*.jpg$
? Ist es optional? Laut Wikipedia wird dieser sogenannte „Zeilenende-Anker“ (kann von Namen keine sinnvolle Funktion ableiten) nur vom Googlebot, Yahoo! Slurp und msnbot berücksichtigt, wodurch sich mir die Frage stellt, ob die Zeile somit von anderen Cralern komplett ignoriert wird?
Wie bekommt man eigentlich die robots.txt aus dem Index? Unsere wird bei der Google-Site-Abfrage mit gelistet.
Disallow: /robots.txt$
? Oder deaktiviert sie sich dann quasi selbst?
@Viktor: das mit dem Impressum indizieren lassen würde ich aber tatsächlich nur dann machen, wenn das auch wirklich unique geschrieben hast. Wenn an dieser Stelle einfach ein Standard-Datenschutz-Text kopiert wird, dann hat man schön viel duplicate content auf seiner Unterseite…