robots.txt
Letzter Autor: induux Redaktion
Wo liegt die robots.txt-Datei?
Abgelegt wir die Datei im Stammverzeichnis der Website. Um sie zu finden öffnet man den FTPcPanel und findet die Datei im public_html Verzeichnis der Website. Sollte dort keine Datei abgelegt sein, sollte schnell eine robots.txt Datei erstellt und abgelegt werden. Die Datei ist ein simples Textdokument mit einer geringen Dateigröße. Die Datei kann mit einem normalen Texteditor geöffnet werden.
Vorteile einer robots.txt
- private Verzeichnisse vor Bots schützen
- Kontrolle der Ressourcen und des Crawling Budgets
- Link auf Sitemap
- Durch Anweisungen / Regeln kann vor Duplicate Content geschützt werden
Dateiformat
Es wird erwartet, dass die Datei UTF-8 Codiert vorliegt. Die Datei besteht aus Key und Value, getrennt durch Doppelpunkte. Leerzeichen sind optional. Das Kommentarzeichen ist #
Eine robots.txt ist in Gruppen unterteilt. Eine Gruppe wird durch ein Keyword Recherche (user-agent) eröffnet. Folgen mehrere der Keywords direkt untereinander, ohne dass eine Direktive wie disallow dazwischen kommt, so gilt die nachfolgende Gruppe für alle der genannten Keywords.
Ein Crawler sucht die für ihn relevante Gruppe nach dem Prinzip closest match, er folgt dabei aber nur einer Gruppe.
Pfadangaben müssen mit einem / beginnen, der den Document Root anzeigt. Pfadangaben sind Case-Sensitive.
Es gibt nur eine sehr begrenzte Anzahl von speziellen Zeichen:
- Das Zeichen * steht für null oder mehr eines beliebigen Zeichens
- $ steht für das Zeilenende - ^ für den Zeilenanfang ist nicht spezifiziert!
Das robots.txt File startet mit der Beschreibung welche Bots die Website crawlen dürfen. Die robots.txt ist dabei keineswegs Google-Spezifisch, sondern wird von mehreren Suchmaschinen-Crawlern eingelesen.
Die fertige robots.txt kann zur Kontrolle validiert werden.
Formatierung
User-agent: EmailWolf Disallow: /
D.h. dem User-Agent EmailWolf ist es nicht erlaubt irgendwelche Dateien vom Server zu lesen. Nun kann diese Liste der Bots sehr lang werden, siehe Liste der Bots. Deshalb ist es besser alle bots auszuschließen mit
User-agent: * Disallow: /
und dem Erlauben der Bots, die drauf zugreifen sollen, wie z. B.
User-agent: Googlebot Allow: /
User-agent: * Disallow: /index.php Noindex: /index.php
Hier wird dem Agent erlaubt die Website zu crawlen außer den Inhalt, der im Verzeichnis /index.php liegt. Wenn dieses Disallow zu einem späteren Zeitpunkt der robots.txt hinzugefügt wurde, kann es sein, dass Inhalte aus diesem Verzeichnis bereits bei Google indexiert wurden. Der Bot weiß nun nicht was er mit dem bereits indexierten Inhalt anstellen soll, da er ihn ja nun nicht mehr zu crawlen bekommt. Mit Noindex wird ihm gesagt, dass er diesen alten Inhalt aus dem Google Index nehmen soll.
In der Datei spielt die Reihenfolge eine Rolle. Zuerst exkludet man alle Bots, die die Webseite nicht besuchen sollen und dann steuert man für die verbleibenden Bots das, was sie sehen sollen. Wichtig ist, dass pro Bot maximal ein Eintrag existieren darf, der gilt. Die robots.txt sollte man stets aktuell halten, Veränderungen kann man mit Tools wie SEMrush sehen und dann in der robots.txt aktualisieren. Denn es ist auch wichtig, dass z.B der Google Bot seine begrenzte Zeit (Crawling Budget) nicht zum Besuchen von Seiten aufwendet, die nicht besucht werden sollten. Daher empfiehlt es sich die Bots nur das crawlen zu lassen, was wirklich wichtig ist. Sprich wichtige Seiten, die ranken sollen und Hilfsdateien (CSS, JacaScript), die für den korrekten Aufbau einer Seite sorgen. Denn ein Bot ist wie ein Browser, der die Seite durchscannt.
Wenn man seine Webseite / Applikation in einer Cloud Umgebung wie Google Cloud Platform (GCP) z.B. mit Kubernetes betreibt, empfiehlt es sich, die robots.txt mit einer sog. Config Map einzuspielen. Das hat den Vorteil, dass bei kleinen Änderungen in der robots.txt nicht die komplette Anwendung neu deployt werden muss.
Gültigkeit
Die robots.txt muss immer im Wurzelverzeichnis des Webservers liegen. Crawler durchsuchen keine Unterverzeichnisse nach eventuell dort liegenden Robots-Files.
Die meisten Crawler erzwingen eine maximale Dateigröße, nach deren überschreiten die Datei nicht weiter eingelesen wird. Google gibt an, nur die ersten 500 kb der robots zu laden. Für andere Crawler kann sich der Wert unterscheiden.
Die robots.txt muss über die selbe (Sub-) Domain, das selbe Protokoll und den selben Port wie die Webseite erreichbar sein, z. B. "https://www.xample.com/robots.txt"
Die robots.txt unterliegt Caching durch Browser und Crawler. Google gibt an, die robots.txt für bis zu einem Tag zu cachen. Es können jedoch Umstände eintreten, die eine erheblich längere Caching-Zeit der robots.txt bewirken. Dazu gehören HTTP-Header, die die Caching-Zeit bestimmen, oder wenn der Webserver nach Ablauf der Caching-Zeit einen 4xx oder 5xx Status-Code zurück gibt
Selbst wenn die Startseite einer Domain einem 301 Redirect unterliegt, wird die robots.txt (sofern sie selbst kein Redirect ist) vom Google-Bot und vom Bing-Bot eingelesen.
Projekte, die noch nicht im Suchmaschinen Index sein sollen
Wenn ein Web Projekt zwar online ist, aber noch nicht Produktiv ist, kann man die Bots davon abhalten, die Seiten zu besuchen:
User-agent: * Disallow: /
Wenn das Projekt bereit ist, kann man die Seiten zur Indexierung freigeben:
User-agent: * Disallow:
Liste der Bots
- grub-client
- Grub ist eine open source distributed search crawler platform.
User-agent: looksmart
Disallow: /
User-agent: WebZip Disallow: /
User-agent: larbin Disallow: /
User-agent: b2w/0.1 Disallow: /
User-agent: psbot Disallow: /
User-agent: Python-urllib Disallow: /
User-agent: NetMechanic Disallow: /
User-agent: URL_Spider_Pro Disallow: /
User-agent: CherryPicker Disallow: /
User-agent: EmailCollector Disallow: /
User-agent: EmailSiphon Disallow: /
User-agent: WebBandit Disallow: /
User-agent: EmailWolf Disallow: /
User-agent: ExtractorPro Disallow: /
User-agent: CopyRightCheck Disallow: /
User-agent: Crescent Disallow: /
User-agent: SiteSnagger Disallow: /
User-agent: ProWebWalker Disallow: /
User-agent: CheeseBot Disallow: /
User-agent: LNSpiderguy Disallow: /
User-agent: ia_archiver Disallow: /
User-agent: ia_archiver/1.6 Disallow: /
User-agent: Teleport Disallow: /
User-agent: TeleportPro Disallow: /
User-agent: MIIxpc Disallow: /
User-agent: Telesoft Disallow: /
User-agent: Website Quester Disallow: /
User-agent: moget/2.1 Disallow: /
User-agent: WebZip/4.0 Disallow: /
User-agent: WebStripper Disallow: /
User-agent: WebSauger Disallow: /
User-agent: WebCopier Disallow: /
User-agent: NetAnts Disallow: /
User-agent: Mister PiX Disallow: /
User-agent: WebAuto Disallow: /
User-agent: TheNomad Disallow: /
User-agent: WWW-Collector-E Disallow: /
User-agent: RMA Disallow: /
User-agent: libWeb/clsHTTP Disallow: /
User-agent: asterias Disallow: /
User-agent: httplib Disallow: /
User-agent: turingos Disallow: /
User-agent: spanner Disallow: /
User-agent: InfoNaviRobot Disallow: /
User-agent: Harvest/1.5 Disallow: /
User-agent: Bullseye/1.0 Disallow: /
User-agent: Mozilla/4.0 (compatible; BullsEye; Windows 95) Disallow: /
User-agent: Crescent Internet ToolPak HTTP OLE Control v.1.0 Disallow: /
User-agent: CherryPickerSE/1.0 Disallow: /
User-agent: CherryPickerElite/1.0 Disallow: /
User-agent: WebBandit/3.50 Disallow: /
User-agent: NICErsPRO Disallow: /
User-agent: Microsoft URL Control - 5.01.4511 Disallow: /
User-agent: DittoSpyder Disallow: /
User-agent: Foobot Disallow: /
User-agent: WebmasterWorldForumBot Disallow: /
User-agent: SpankBot Disallow: /
User-agent: BotALot Disallow: /
User-agent: lwp-trivial/1.34 Disallow: /
User-agent: lwp-trivial Disallow: /
User-agent: BunnySlippers Disallow: /
User-agent: Microsoft URL Control - 6.00.8169 Disallow: /
User-agent: URLy Warning Disallow: /
User-agent: Wget/1.6 Disallow: /
User-agent: Wget/1.5.3 Disallow: /
User-agent: Wget Disallow: /
User-agent: LinkWalker Disallow: /
User-agent: cosmos Disallow: /
User-agent: moget Disallow: /
User-agent: hloader Disallow: /
User-agent: humanlinks Disallow: /
User-agent: LinkextractorPro Disallow: /
User-agent: Offline Explorer Disallow: /
User-agent: Mata Hari Disallow: /
User-agent: LexiBot Disallow: /
User-agent: Web Image Collector Disallow: /
User-agent: The Intraformant Disallow: /
User-agent: True_Robot/1.0 Disallow: /
User-agent: True_Robot Disallow: /
User-agent: BlowFish/1.0 Disallow: /
User-agent: JennyBot Disallow: /
User-agent: MIIxpc/4.2 Disallow: /
User-agent: BuiltBotTough Disallow: /
User-agent: ProPowerBot/2.14 Disallow: /
User-agent: BackDoorBot/1.0 Disallow: /
User-agent: toCrawl/UrlDispatcher Disallow: /
User-agent: WebEnhancer Disallow: /
User-agent: suzuran Disallow: /
User-agent: VCI WebViewer VCI WebViewer Win32 Disallow: /
User-agent: VCI Disallow: /
User-agent: Szukacz/1.4 Disallow: /
User-agent: QueryN Metasearch Disallow: /
User-agent: Openfind data gathere Disallow: /
User-agent: Openfind Disallow: /
User-agent: Xenu's Link Sleuth 1.1c Disallow: /
User-agent: Xenu's Disallow: /
User-agent: Zeus Disallow: /
User-agent: RepoMonkey Bait & Tackle/v1.01 Disallow: /
User-agent: RepoMonkey Disallow: /
User-agent: Microsoft URL Control Disallow: /
User-agent: Openbot Disallow: /
User-agent: URL Control Disallow: /
User-agent: Zeus Link Scout Disallow: /
User-agent: Zeus 32297 Webster Pro V2.9 Win32 Disallow: /
User-agent: Webster Pro Disallow: /
User-agent: EroCrawler Disallow: /
User-agent: LinkScan/8.1a Unix Disallow: /
User-agent: Keyword Recherche Density/0.9 Disallow: /
User-agent: Kenjin Spider Disallow: /
User-agent: Iron33/1.0.2 Disallow: /
User-agent: Bookmark search tool Disallow: /
User-agent: GetRight/4.2 Disallow: /
User-agent: FairAd Client Disallow: /
User-agent: Gaisbot Disallow: /
User-agent: Aqua_Products Disallow: /
User-agent: Radiation Retriever 1.1 Disallow: /
User-agent: Flaming AttackBot Disallow: /
User-agent: Oracle Ultra Search Disallow: /
User-agent: MSIECrawler Disallow: /
User-agent: PerMan Disallow: /
User-agent: searchpreview Disallow: /
Dilemma: Verbietet man mit der robots.txt den Crawler eine Seite zu crawlen, hat der Crawler auch keine Chance auf der Seite ein Meta-Tag noindex zu lesen. Deshalb sollten bei Seiten, die schon im Google index sind die Anweisung Noindex: direkt in der robots.txt erfolgen.
robots.txt Bestandteile für spezielle Websysteme
robots.txt für TYPO3
Für eine mit TYPO3 CMS erstellte Website empfiehlt sich folgender Inhalt der robots.txt der natürlich auf die konkrete Website angepasst werden muss:
# Only allow URLs generated with RealURL Disallow: /*?id=* Disallow: /*&id=* Disallow: /*&debug=* Disallow: /*?debug=* # L=0 is the default language Disallow: /*?L=0* Disallow: /*&L=0* # typeNum = 98 is usually the print version. Disallow: /*?type=98* Disallow: /*&type=98* # Should always be protected (.htaccess) Disallow: /*/Private/* Disallow: /fileadmin/templates/html/* Disallow: /*/Configuration/* Disallow: /typo3temp/* Allow: /typo3temp/*.css Allow: /typo3temp/*.css.*.gzip Allow: /typo3temp/*.js Allow: /typo3temp/*.js.*.gzip Allow: /typo3temp/*.jpg Allow: /typo3temp/*.gif Allow: /typo3temp/*.png Sitemap: https://example.com/sitemap.xml
robots.txt für Wordpress
Auch für das CMS WordPress Website erstellen gibt es einen eigenen Block in der robots.txt, der spezielle URLs ausschließen soll:
User-agent: * Disallow: /wp-admin/ Allow: /wp-admin/admin-ajax.php Disallow: /wp-login.php Disallow: /?s= Disallow: /search/ Sitemap: https://www.example.com/sitemap.xml