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 Allow
und 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 Disallow
und verschwinden würde und niemals die speziell zulässige Datei crawlen würde .
Wir sind im klaren, wenn wir alle Allow
Zeilen 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 Allow
zuerst und dann Disallow
die Idee überprüft haben , die Allow
spezifischer 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 Allow
zuerst prüft , glaubt, dass er alles auf der Site crawlen kann.
Auch das kann in diesem Fall umgangen werden. Wir können das Matching Allow
mit dem Matching vergleichen Disallow
und 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?
quelle
Antworten:
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.
quelle
Hier ist meine Sicht auf das, was ich in diesen drei Beispielen sehe.
Beispiel 1
Ich würde das gesamte
/folder1/
Verzeichnis mit Ausnahme dermyfile.html
Datei 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.html
Dateien, 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.
quelle