Corro un crawler Web su larga scala. Facciamo del nostro meglio per far funzionare il crawler secondo gli standard della community accettati e questo include il rispetto di robots.txt. Riceviamo pochissime lamentele sul crawler, ma quando lo facciamo la maggior parte riguarda la nostra gestione di robots.txt. Molto spesso il Webmaster ha commesso un errore nel suo file robots.txt e segnaliamo gentilmente l'errore. Ma periodicamente ci imbattiamo in aree grigie che comportano la gestione di Allow
e Disallow
.
La pagina robots.txt non copre Allow
. Ho visto altre pagine, alcune delle quali dicono che i crawler usano una regola di "prima corrispondenza", e altri che non specificano. Ciò crea confusione. Ad esempio, la pagina di Google su robots.txt conteneva questo esempio:
User-agent: Googlebot
Disallow: /folder1/
Allow: /folder1/myfile.html
Ovviamente, una regola di "prima corrispondenza" qui non funzionerebbe perché il crawler avrebbe visto Disallow
e se ne sarebbe andato via, senza mai eseguire la scansione del file che era specificamente consentito.
Siamo in chiaro se ignoriamo tutte le Allow
righe, ma potremmo non eseguire la scansione di qualcosa a cui è consentito eseguire la scansione. Ci mancheranno le cose.
Abbiamo avuto un grande successo controllando Allow
prima, e poi controllando Disallow
, l'idea che Allow
doveva essere più specifica di Disallow
. Questo perché, per impostazione predefinita (ovvero in assenza di istruzioni contrarie), è consentito qualsiasi accesso. Ma poi ci imbattiamo in qualcosa del genere:
User-agent: *
Disallow: /norobots/
Allow: /
L'intento qui è ovvio, ma ciò Allow: /
farà sì che un bot che controlla per Allow
primo pensi di poter eseguire la scansione di qualsiasi cosa sul sito.
Anche questo può essere risolto in questo caso. Possiamo confrontare la corrispondenza Allow
con la corrispondenza Disallow
e determinare che non è consentito eseguire la scansione di nulla in / norobots /. Ma questo si rompe di fronte ai caratteri jolly:
User-agent: *
Disallow: /norobots/
Allow: /*.html$
La domanda, quindi, è consentita alla ricerca per indicizzazione del bot /norobots/index.html
?
La regola della "prima corrispondenza" elimina tutte le ambiguità, ma spesso vedo siti che mostrano qualcosa come il vecchio esempio di Google, mettendo il più specifico Allow
dopo il Disallow
. Tale sintassi richiede una maggiore elaborazione da parte del bot e porta ad ambiguità che non possono essere risolte.
La mia domanda, quindi, è qual è il modo giusto di fare le cose? Cosa si aspettano i webmaster da un bot ben educato quando si tratta della gestione di robots.txt?