addthis

Donnerstag, 5. September 2013

Mit der Datei robots.txt Seiten vor Robots schützen

Mit der Datei robots.txt Seiten vor Robots schützen
Pietro Scherer
 

Manchmal ist es sinnvoll, bestimmte Seiten oder Bereiche einer Site vor der Indexierung zu schützen. Zum Beispiel dann, wenn es sich um Seiten handelt, die sich täglich ändern oder an denen noch gearbeitet wird. Auch Programmdateien, Bilder oder Logfiles will man vielleicht vor Robots schützen.


Um das zu ermöglichen, gibt es den Robots Exclusion Standard. Nach diesem Standard muss man eine Textdatei mit dem Namen robots.txt erstellen und diese im Stammverzeichnis der Domain platzieren, so dass Robots sie finden. Die Suchpfade sehen dann z.B. so aus:

http://download.beispiel.de/robots.txt
http://beispiel.de:8080/robots.txt

Die robots.txt Datei ist nach einem bestimmten Schema aufgebaut. Zuerst gibt man an, für welchen Crawler die Anweisungen gelten und dann die einzelnen Anweisungen. Ein Beispiel:

# robots.txt für http://www.beispiel.de/
User-agent: BeispielRobot
Disallow: /temp/       # Die Dateien sind sehr kurzlebig
Disallow: /logfiles/   # Die ändern sich jeden Tag
Disallow: /bilder/     # Bilder nicht downloaden
Disallow: /cgi-bin/    # CGI Ausgaben nicht indexieren
Disallow: /news.html   # Die news.html ändert sich täglich

Mit User-agent: BeispielRobot bestimmt man, dass die Anweisungen nur für den Crawler BeispielRobot gelten. Mit den einzelnen Disallow Einträgen bestimmt man Dateien und Verzeichnisse die nicht indexiert werden sollen. Alles, vor dem ein # steht, gilt als Kommentar und wird von den Robots ignoriert.

Wenn man mit einem Mal alle Crawler ausschließen will, benutzt man den sog. Wildchar *, also:

 # Alle Robots ausschließen
User-agent: *
Disallow: /temp/

Wenn man nicht gleich alle Crawler, sondern nur ein paar bestimmte meint, kann man diese so angeben:

# Massendownloader vom CGI Verzeichnis fernhalten
User-agent: wget
User-agent: webzip
User-agent: webmirror
User-agent: webcopy
Disallow: /cgi-bin/

Um seine Site ganz von der Indexierung auszuschließen kann man folgendes benutzen:
# Ganze Site für alle Robots sperren

User-agent: *
Disallow: /
Wenn man den Slash (/) weglässt, gibt man Seine Site ganz für die Indexierung frei:

# Ganze Site freigeben
User-agent: *
Disallow:

Bei den Disallow Einträgen ist die Groß- und Kleinschreibung egal. Man sollte aber darauf achten, wo und ob man den Slash (/) setzt, denn der Eintrag

User-agent: *
Disallow: /index
Disallow: /temp/

Würde dazu führen, dass alle Urls die mit /Index anfangen nicht indexiert werden, auch z.B. /index.html oder /indexed-files/datei.html statt einfach nur das Verzeichnis /index/, wohingegen bei Disallow: /temp/ wirklich nur die Dateien im Verzeichnis /temp/ ausgeschlossen werden.

Um das alles zusammenzufassen ein kleines Beispiel:

# http://beispiel.de/robots.txt
User-agent: scooter
Disallow: /
User-agent: wget
User-agent: webzip
Disallow:
User-agent: *
Disallow: /news/
Disallow: /radio.html
Disallow: /temp

Die Anweisungen für alle (*) Robots werden nur von Robots interpretiert, die nicht explizit aufgeführt werden; scooter, wget und webzip ignorieren in diesem Fall die Angaben für *.


Ein Working Draft der IETF führt neben der Disallow Anweisung auch die Allow Anweisung ein:

User-agent: *
Disallow: /temp/
Allow: /temp/daily.html

Da die Allow Anweisung aber erst später als der eigentliche Standard eingeführt wurde, wird sie noch nicht von allen Robots unterstützt. Von daher sollte man sich nicht darauf verlassen und lieber nur Disallow benutzen.


Beim Erstellen der robots.txt muss man darauf achten, dass man auch wirklich einen Texteditor benutzt und nicht etwa einen HTML Editor. Geeignete Editoren wären z.B. vi unter Linux, edit.com unter DOS oder notepad.exe unter Windows.

Wenn die Datei via FTP auf den Webserver transferiert wird, sollte man sicherstellen, dass man die Datei im ASCII Modus überträgt. Wie das funktioniert, kann man in der Anleitung des jeweiligen FTP Clients nachlesen. Wichtig ist auch, dass der Dateiname nur aus Kleinbuchstaben besteht und nicht etwa Robots.TXT heißt. Falls das Betriebssystem das nicht unterstützt (z.B. DOS), kann man die Datei auch nach dem Transfer auf den Server umbenennen.

Wer darüber hinaus noch die Syntax seiner robots.txt überprüfen will, kann den robots.txt Syntax Checker dazu benutzen.

Es ist auf jeden Fall sinnvoll, eine minimale robots.txt Datei nach diesem Schema zu erstellen:

# robots.txt for http://www.beispiel.de/
# Zugriff auf alle Dateien erlauben
User-agent: *
Disallow:

Da man so viele unnötige Einträge in den Errorlogs verhindert (404 Not found), die sonst immer dann auftauchen, wenn der Crawler die Datei nicht findet.


Man kann mit der robots.txt keine Dateien vor Zugriffen schützen. Dazu sollte man immer den Paßwortschutz des Webservers verwenden. Auch ist kein Robot verbindlich verpflichtet, sich an den Exclusion Standard zu halten, auch wenn es die meisten tun. Bei den Disallow: sind keine wildchars wie? oder * erlaubt. Mit der robots.txt kann man auch keine Dateiverweise erstellen und auch keinen Robot dazu bringen etwas Bestimmtes zu indexieren. Man kann höchstens darum bitten, dass gewisse Seiten nicht indexiert werden.

Keine Kommentare:

Kommentar veröffentlichen