Wie gehe ich in robots.txt mit Zulassen und Nicht zulassen um?

8

Ich verwende einen ziemlich großen Webcrawler. Wir sind sehr bemüht, den Crawler innerhalb der akzeptierten Community-Standards zu betreiben, und dazu gehört auch die Einhaltung von robots.txt. Wir bekommen nur sehr wenige Beschwerden über den Crawler, aber wenn wir das tun, geht es hauptsächlich um unseren Umgang mit robots.txt. Meistens hat der Webmaster einen Fehler in seiner robots.txt gemacht und wir weisen freundlich auf den Fehler hin. Aber in regelmäßigen Abständen stoßen wir auf Grauzonen, die den Umgang mit Allowund beinhalten Disallow.

Die robots.txt- Seite wird nicht behandelt Allow. Ich habe andere Seiten gesehen, von denen einige besagen, dass Crawler eine "First Matching" -Regel verwenden, und andere, die dies nicht angeben. Das führt zu Verwirrung. Auf der Google-Seite zu robots.txt wurde beispielsweise dieses Beispiel verwendet:

User-agent: Googlebot
Disallow: /folder1/
Allow: /folder1/myfile.html

Offensichtlich würde eine "First Matching" -Regel hier nicht funktionieren, da der Crawler das sehen Disallowund verschwinden würde und niemals die speziell zulässige Datei crawlen würde .

Wir sind im klaren, wenn wir alle AllowZeilen ignorieren , aber dann kriechen wir möglicherweise nicht etwas, das wir kriechen dürfen. Wir werden Dinge vermissen.

Wir hatten großen Erfolg, indem wir Allowzuerst und dann Disallowdie Idee überprüft haben , die Allowspezifischer sein sollte als Disallow. Dies liegt daran, dass standardmäßig (dh ohne gegenteilige Anweisungen) jeder Zugriff zulässig ist. Aber dann stoßen wir auf so etwas:

User-agent: *
Disallow: /norobots/
Allow: /

Die Absicht hier ist offensichtlich, aber das Allow: /führt dazu, dass ein Bot, der Allowzuerst prüft , glaubt, dass er alles auf der Site crawlen kann.

Auch das kann in diesem Fall umgangen werden. Wir können das Matching Allowmit dem Matching vergleichen Disallowund feststellen, dass wir in / norobots / nichts crawlen dürfen. Aber das bricht angesichts von Platzhaltern zusammen:

User-agent: *
Disallow: /norobots/
Allow: /*.html$

Die Frage ist also, ob der Bot kriechen darf /norobots/index.html.

Die "First Matching" -Regel beseitigt alle Mehrdeutigkeiten, aber ich sehe oft Websites, die so etwas wie das alte Google-Beispiel zeigen und die spezifischeren Allow nach dem setzen Disallow. Diese Syntax erfordert mehr Verarbeitung durch den Bot und führt zu Mehrdeutigkeiten, die nicht gelöst werden können.

Meine Frage ist also, wie man Dinge richtig macht. Was erwarten Webmaster von einem gut erzogenen Bot, wenn es um die Handhabung von robots.txt geht?

Jim Mischel
quelle
Die einfache Verarbeitung aller Anweisungen in der richtigen Reihenfolge (von oben nach unten) scheint alle Unklarheiten zu beseitigen (einschließlich der Verarbeitung von Platzhalter- URL-Mustern, die offiziell "undefiniert" ist). Die wichtigsten Suchmaschinen-Bots (Googlebot, Bingbot usw.) funktionieren jedoch nicht so, sodass dies nicht funktioniert.
MrWhite

Antworten:

4

Ein sehr wichtiger Hinweis: Die Allow- Anweisung sollte vor der Disallow- Anweisung stehen, unabhängig davon, wie spezifisch Ihre Anweisungen sind. In Ihrem dritten Beispiel - nein, die Bots kriechen nicht /norobots/index.html.

Im Allgemeinen setze ich als persönliche Regel zuerst zulässige Anweisungen und liste dann die nicht zulässigen Seiten und Ordner auf.

Vergil Penkov
quelle
Sie empfehlen mir also, den Standard "First Matching Rule" zu befolgen? Das heißt, der Bot liest die robots.txt und nimmt das erste Zulassen oder Nichtzulassen, das mit der fraglichen URL übereinstimmt?
Jim Mischel
1
Aber wissen Sie, ob dies die allgemein akzeptierte Interpretation von robots.txt ist? Das heißt, wenn ich den Standard "First Matching Rule" implementieren würde, würden die meisten Webmaster dies erwarten?
Jim Mischel
4
Die Beschreibung von Zulassen im Wikipedia-Artikel auf robots.txt - en.wikipedia.org/wiki/Robots_exclusion_standard#Allow_directive - (und mehreren anderen Websites) besagt, dass "erste Übereinstimmungsregel" der Standard ist. Da dies zu 100% eindeutig und einfach zu implementieren ist und sich als richtig erweist, habe ich mich dafür entschieden.
Jim Mischel
1
Vielen Dank für die Beantwortung Ihrer eigenen Frage :) Ich war mir nicht sicher, wie ich antworten sollte. Ich weiß nichts über die allgemein akzeptierte Methode, aber so benutze ich sie seit ich als SEO-Experte arbeite und sie hat immer richtig funktioniert.
Vergil Penkov
1
Die Reihenfolge der Zulassungs- und Nichtzulassungsanweisungen macht für Googlebot keinen Unterschied, da stattdessen die Spezifität betrachtet wird. Bing auch, aber ich weiß nichts über andere Suchmaschinen. Wenn Sie Zweifel haben, setzen Sie Allows an die erste Stelle.
Pelms
2

Hier ist meine Sicht auf das, was ich in diesen drei Beispielen sehe.

Beispiel 1
Ich würde das gesamte /folder1/Verzeichnis mit Ausnahme der myfile.htmlDatei ignorieren . Da sie es ausdrücklich zulassen, würde ich annehmen, dass es einfach einfacher war, das gesamte Verzeichnis zu blockieren und diese eine Datei explizit zuzulassen, anstatt jede Datei aufzulisten, die sie blockieren wollten. Wenn dieses Verzeichnis viele Dateien und Unterverzeichnisse enthält, kann die Datei robots.txt schnell unhandlich werden.

Beispiel 2
Ich würde annehmen, dass das /norobots/Verzeichnis gesperrt ist und alles andere zum Crawlen verfügbar ist. Ich habe dies als "alles außer dem Verzeichnis / norobots / crawlen" gelesen.

Beispiel 3
Ähnlich wie in Beispiel 2 würde ich annehmen, dass das /norobots/Verzeichnis gesperrt ist und alle .htmlDateien, die sich nicht in diesem Verzeichnis befinden, zum Crawlen verfügbar sind. Ich habe dies als "alle HTML-Dateien crawlen, aber keinen Inhalt im Verzeichnis / norobots / crawlen" gelesen.

Hoffentlich enthält der User-Agent Ihres Bots eine URL, über die er weitere Informationen zu Ihren Crawling-Gewohnheiten erhalten und Entfernungsanfragen stellen oder Ihnen Feedback geben kann, wie seine robots.txt interpretiert werden soll.

John Conde
quelle
1
Ihre Antworten stimmen wahrscheinlich mit der Absicht überein, mit Ausnahme der letzten, die ich etwas fragwürdig finde. In diesen speziellen Fällen kann ich die Handhabung der Roboter korrekt codieren, aber es gibt andere mehrdeutige Fälle, die nicht so einfach zu bestimmen sind. Mehr noch, ich suche nach einer allgemeinen Lösung. Und ja, unsere User-Agent-Zeichenfolge enthält einen Link zu unserer FAQ-Seite. Und obwohl wir beschreiben können, wie wir mit robots.txt umgehen, wäre es für alle Beteiligten am besten, wenn wir es nicht müssten. Das heißt, wenn alle die Dinge gleich handhabten. Dies scheint jedoch nicht der Fall zu sein.
Jim Mischel
So behandelt Googlebot Ihre Beispiele, wie sie mit dem Testtool robots.txt (Webmaster-Tools> Blockierte URLs) getestet werden können. Google macht es nichts aus, ob Sie die Zulassungen oder Nichtzulassungen an die erste Stelle setzen, aber es gibt einen Algorithmus, der die Spezifität bestimmt, was zu einigen nicht offensichtlichen Ergebnissen führt. Wenn Sie beispielsweise im dritten Beispiel '/*.html$' durch '/*myfile.html$' ersetzen, ist 'myfile.html' zulässig, anstatt blockiert zu werden, ODER wenn Sie das nachfolgende '/' von 'verlieren. / norobots / ', .html-Dateien sind ebenfalls zulässig.
Pelms
Aha! Laut Wikipedia überprüft Google nur die Anzahl der Zeichen, um zu bestimmen, welche Direktive verwendet werden soll, und im Fall eines "Zeichnens" geht es um "Zulassen".
Pelms