Qual è il modo corretto di gestire Consenti e Non consentire in robots.txt?


8

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 Allowe 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 Disallowe se ne sarebbe andato via, senza mai eseguire la scansione del file che era specificamente consentito.

Siamo in chiaro se ignoriamo tutte le Allowrighe, ma potremmo non eseguire la scansione di qualcosa a cui è consentito eseguire la scansione. Ci mancheranno le cose.

Abbiamo avuto un grande successo controllando Allowprima, e poi controllando Disallow, l'idea che Allowdoveva 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 Allowprimo pensi di poter eseguire la scansione di qualsiasi cosa sul sito.

Anche questo può essere risolto in questo caso. Possiamo confrontare la corrispondenza Allowcon la corrispondenza Disallowe 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?


La semplice elaborazione di tutte le direttive in ordine (dall'alto verso il basso) sembrerebbe rimuovere tutte le ambiguità (inclusa l'elaborazione di pattern URL con caratteri jolly , che è ufficialmente "non definita"). Tuttavia, i principali bot dei motori di ricerca (Googlebot, Bingbot, ecc.) Non funzionano in questo modo, quindi non è fattibile.
MrWhite,

Risposte:


4

Una nota molto importante: l' istruzione Allow dovrebbe precedere l' istruzione Disallow , indipendentemente da quanto siano specifiche le tue dichiarazioni. Quindi nel tuo terzo esempio - no, i robot non strisciano /norobots/index.html.

In genere, come regola personale, inserisco prima le istruzioni consentite e quindi elenco le pagine e le cartelle non consentite.


Quindi mi stai raccomandando di seguire lo standard "prima regola di abbinamento"? Cioè, il bot legge il file robots.txt e accetta il primo Consenti o Non consentire che corrisponde all'URL in questione?
Jim Mischel,

1
Ma sai se questa è l'interpretazione generalmente accettata di robots.txt? Cioè, se dovessi implementare lo standard della "prima regola di abbinamento", sarebbe quello che la maggior parte dei webmaster si aspetta?
Jim Mischel,

4
La descrizione di Allow nell'articolo di Wikipedia su robots.txt - en.wikipedia.org/wiki/Robots_exclusion_standard#Allow_directive - (e su molti altri siti) afferma che "la prima regola di corrispondenza" è lo standard. Dal momento che è chiaro al 100% e facile da implementare e dimostrare corretto, è quello che ho seguito.
Jim Mischel,

1
Grazie per aver risposto alla tua domanda :) Non ero sicuro di come rispondere. Non conosco il metodo generalmente accettato, tuttavia è così che lo uso da quando ho iniziato a lavorare come esperto SEO e ha sempre funzionato correttamente.
Vergil Penkov,

1
L'ordine delle istruzioni Allow e Disallow non fa alcuna differenza per Googlebot, che guarda invece alla specificità. Anche Bing, ma non è a conoscenza di altri motori di ricerca, quindi in caso di dubbio metti Permette per prima cosa, credo.
pelms

2

Ecco la mia opinione su ciò che vedo in questi tre esempi.

Esempio 1
Vorrei ignorare l'intera /folder1/directory tranne il myfile.htmlfile. Dal momento che lo consentono esplicitamente, suppongo che sia stato semplicemente più semplice bloccare l'intera directory e consentire esplicitamente quel file invece di elencare tutti i file che volevano aver bloccato. Se quella directory contenesse molti file e sottodirectory, quel file robots.txt potrebbe diventare rapidamente ingombrante.

Esempio 2
Suppongo che la /norobots/directory sia off limits e tutto il resto è disponibile per la ricerca per indicizzazione. Ho letto questo come "scansiona tutto tranne la directory / norobots /".

Esempio 3
Simile all'esempio 2, suppongo che la /norobots/directory sia off limits e che tutti i .htmlfile non presenti in quella directory siano disponibili per la ricerca per indicizzazione. Ho letto questo come "scansiona tutti i file .html ma non scansionare alcun contenuto nella directory / norobots /".

Si spera che l'agente utente del tuo bot contenga un URL in cui possono trovare maggiori informazioni sulle tue abitudini di scansione e fare richieste di rimozione o darti un feedback su come vogliono interpretare il loro robots.txt.


1
Le tue risposte probabilmente corrispondono all'intento, tranne l'ultimo, che trovo piuttosto discutibile. In quei casi specifici posso codificare correttamente la gestione dei robot, ma ci sono altri casi ambigui che non sono così facilmente determinabili. Inoltre, sto cercando una soluzione generale. E, sì, la nostra stringa user-agent ha un link alla nostra pagina FAQ. E sebbene possiamo descrivere come gestiamo robots.txt, sarebbe meglio per tutti gli interessati se non fosse necessario. Cioè, se tutti gestissero le cose allo stesso modo. Ma questo non sembra essere il caso.
Jim Mischel,

Quanto sopra è il modo in cui Googlebot gestisce i tuoi esempi come possono essere testati sul loro strumento di test robots.txt (Strumenti per i Webmaster> URL bloccati). A Google non importa se si inserisce prima Consenti o Non accetta, ma ha un algoritmo che determina la specificità, che porta a risultati non ovvi. Ad esempio, se si sostituisce '/*.html$' con '/*myfile.html$' nel terzo esempio, 'myfile.html' è consentito invece di essere bloccato O se si perde il trailing '/' da ' / norobots / ', sono consentiti anche i file .html.
pelms

Aha! Secondo Wikipedia, Google esamina solo il numero di caratteri per determinare quale direttiva utilizzare e, nel caso di un 'sorteggio', va 'Consenti'.
pelms
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.