Quest’anno il file Robots.txt ha compiuto 20 anni, fu infatti implementato la prima volta nel 1994 ed ancora è largamente usato. Prima di entrare nei dettagli degli errori più comuni da evitare è importante capire perchè fu necessario sviluppare questo protocollo ed il suo standard.
#tutto aperto:
User-agent: *
Disallow:
#tutto chiuso:
User-agent: *
Disallow: /
#esempio
User-agent: *
Disallow: /foto
Allow: /foto/mamma.jpg
Negli anni ’90 i web server avevano risorse molto limitate rispetto ad oggi in ordine di banda internet dedicata ad ogni sito, non era raro infatti che un bot mandasse in crash un sito a causa di richieste eccessive. Per questo motivo il 30 giugno del 1994 a grande richiesta fu sviluppato il “Robots Exclusion Protocol” che permette ai proprietari dei siti web di richiedere ai bot automatici di non scaricare (non fare crawling) di alcune pagine o intere sezioni del sito. Riducendo il traffico dei bot i vantaggi furono subito evidenti: i webmaster poterono offrire maggiore banda ai veri utenti, gli esseri umani, e ridurre il tempo di inattività del sito. Recenti studi dimostrano che il traffico non-umano è costantemente in crescita e genera la maggior parte del traffico internet.

L’utilizzo della direttiva Disallow del Robots.txt permise di migliorare molti aspetti nella gestione di un sito web ma, l’altro lato della medaglia, portò anche diversi problemi ai webmaster. Ad esempio, qualsiasi buon motore di ricerca ha come fine (o mezzo?) quello di proporre i migliori risultati data una query di ricerca, anche per risorse bloccate (accidentalmente o no) tramite Robots.txt.
Mostrare risultati di qualità non è semplice se i siti che contengono le informazioni richieste sono bloccati dal Robots.txt poiché gli spider dei motori di ricerca non possono fare crawling di quei contenuti. Per superare questo problema Google estrae testi rilevanti da risorse non bloccate dal Robots.txt e li associa agli URL bloccati, in base a relazioni di link interni e backlink. Ad esempio Google potrebbe usare in SERP come Title della risorsa bloccata l’anchor text più diffuso e rilevante utilizzato per linkare a quella risorsa.
Come risultato Google è in grado di mostrare in SERP URL bloccati con il Disallow nel Robots.txt.

Un effetto collaterale nell’uso della direttiva Disallow nel Robots.txt è che il posizionamento per gli URL in Disallow generalmente crolla nel tempo perché i bot non possono leggere il contenuto della pagina bloccata ed eventuali suoi aggiornamenti.
Alcuni errori che ho trovato nei Robots.txt
File Robots.txt vuoti – Google consiglia* di usare il file Robots.txt soltanto se all’interno del sito ci sono sezioni e/o contenuti che non si vogliono far indicizzare dal motore di ricerca. Se intendi far indicizzare qualsiasi cosa presente nel sito non è necessario usare il file robots.txt, nemmeno se lasciato vuoto. La maggior parte dei problemi può essere risolto senza l’uso del file Robots.txt e del Disallow. Pensa al file Robots.txt come l’ultima spiaggia per non far indicizzare una risorsa. Prima di implementare un file Robots.txt sarebbe meglio considerare, ad esempio, lo status code 410, il tag meta noindex e il rel canonical.
robots.txt
, è necessario comprendere i rischi che l’utilizzo di questo solo metodo di blocco dell’URL comporta. Talvolta sarebbe opportuno prendere in considerazione altri metodi per assicurarti che i tuoi URL non siano rintracciabili sul web.Non bloccare le risorse 24 ore prima – nel 2000 Google iniziò a scaricare i file Robots.txt una volta al giorno, prima del 2000 invece Google controllava i file Robots.txt una volta a settimana. Poteva capitare quindi che alcuni URL in Disallow venivano scaricati ed indicizzati durante quel gap temporale, tra una lettura del Robots.txt e la successiva.
Oggi Google controlla i file Robots.txt ogni 24 ore ma non sempre. Google potrebbe aumentare o diminuire la durata della cache basandosi sull’header HTTP chiamato “Cache-Control”, per maggiori informazioni puoi leggere questa guida: Direttive di Cache-Control, cosa sono e come funzionano. Gli altri motori di ricerca potrebbero impiegare più di 24 ore per verificare i file Robots.txt, in ogni caso è possibile che i contenuti in Disallow vengano scaricati durante un check e l’altro nelle 24 ore.
Mettere un URL in disallow tramite il Robots.txt per evitare che una risorsa appaia nei risultati di ricerca – bloccare un URL con il Robots.txt non impedisce alla risorsa di essere indicizzata e quindi inserita nei risultati di ricerca. Come avevo spiegato in questo articolo sul funzionamento di Google, il crawling e l’indexing sono due processi diversi ed indipendenti. URL in Disallow nel Robots.txt vengono indicizzati dai motori di ricerca se sono linkati da pagine che non sono in Disallow nel Robots.txt. Google è quindi capace di associare il testo proveniente da altre risorse con l’URL in Disallow e mostrare in serp l’URL in Disallow. Questo processo è svolto senza bisogno di fare crawling della pagina in Disallow via Robots.txt.
Per evitare che una risorsa finisca nei risultati di ricerca l’URL deve necessariamente essere scaricabile dai bot per dargli modo di leggerlo, non deve essere messo in disallow nel Robots.txt. Una volta che l’URL è scaricabile dai bot si possono utilizzare diversi metodi per impedirne l’indicizzazione da Google, come ad esempio il tag meta noindex, una password di protezione al contenuto, oppure il tag X-Robots nell’intestazione HTTP.
Usare il Disallow nel Robots.txt per rimuovere dai risultati di ricerca l’URL di pagine non più esistenti – come detto sopra, il Robots.txt non rimuove il contenuto da Google. Google non può immaginare che la pagina non sia più esistente soltanto perchè è stato impedito l’accesso dei suoi bot verso quella pagina.
Usando il Disallow nel Robots.txt per pagine che sono state indicizzate ma che sul sito non esistono più, si impedisce di fatto a Google di scoprire che quella pagina è stata effettivamente rimossa perchè non ne potrà conoscere lo status code HTTP. Come risultato questi URL saranno trattati come qualsiasi altro URL escluso via Robots.txt e saranno quindi inclusi nei risultati di ricerca per del tempo indefinito.
Il metodo più pratico e veloce per richiedere a Google l’esclusione dai dai risultati di ricerca di una pagina non più esistente è quella di permettere a Googlebot di visitare/scansionare/scaricare la pagina, solo in questo modo potrà individuare lo status code 404/410 e di conseguenza rimuoverla dai risultati di ricerca. Fino a quando Googlebot non ha la certezza che la pagina sia stata effettivamente rimossa quell’URL continuerà ad essere presente in SERP.
Implementare lo status code 410 su tutte le risorse rimosse è il metodo più veloce per de-indicizzare pagine non più esistenti.
Mettere in Disallow nel Robots.txt URL con redirezioni attive – il Disallow su URL con redirezioni (status code 301 o 302 o meta refresh) verso altri URL impedisce ai motori di ricerca di individuare il redirect. Dato che il Robots.txt non rimuove contenuti dall’indice dei motori di ricerca, disabilitare un URL con redirezione generalmente causa ai motori di ricerca l’errore di mostrare in SERP la risorsa indicizzata ma con URL errato.
Per indicare a Google che una risorsa ha cambiato URL è necessario permettere ai bot l’accesso al vecchio URL così che possano individuare lo status code 3xx e associare il contenuto al nuovo URL.
Usare il Disallow nel Robots.txt su pagine che hanno il meta tag noindex – impedire l’accesso ai bot su pagine con meta tag noindex impedisce di fatto ai bot l’individuazione del tag noindex rendendolo inefficace. Può succedere che le pagine con meta tag noindex vengano mostrate nei risultati di ricerca, perchè come detto sopra, il bot non può individuare il meta tag noindex.
Se non vuoi che una pagina appaia nei risultati di ricerca devi implementare il meta tag noindex e lasciare libero accesso ai bot su quella pagina.
Alcuni siti cercano di comunicare con Google attraverso i commenti nel file Robots.txt – Googlebot essenzialmente ignora i commenti nel file Robots.txt

Usare il Disallow nel Robots.txt su pagine con il rel=canonical oppure il meta tag nofollow e la X-Robots-Tags – bloccare un URL come abbiamo visto impedisce ai bot di leggerne il contenuto, compresi i tag inseriti e l’intestazione HTTP, di conseguenza nessuno di questi comandi verrà considerato.
Per permettere a Google di considerare gli status code od i meta tag la pagina non deve essere bloccata nel Robots.txt.
Bloccare risorse confidenziali con il Disallow nel Robots.txt – qualsiasi utente con un minimo di esperienza sull’utilizzo del file Robots.txt è in grado di accederci per leggerlo perchè il robots.txt è (e deve essere) una risorsa pubblica e accessibile. Vedi google.com/robots.txt e apple.com/robots.txt.
Il file Robots.txt non è stato creato per nascondere informazioni, le sue funzioni sono ben diverse come abbiamo visto.
Un modo per nascondere una risorsa confidenziale ai bot è quello di fornire il contenuto al client soltanto dopo aver richiesto le credenziali, utente e password ad esempio.
Robots.txt immensi – Robots.txt troppo complessi possono facilmente generare problemi al webmaster e a Google. Non so quanti siti al mondo possano aver bisogno di un Robots.txt così. Lo standard limita la grandezza del file Robots.txt a 500 kb, il testo in eccesso viene ignorato da Google.
I file Robots.txt dovrebbero essere brevi e molto chiari.
Robots.txt senza status code – se Google prova ad accedere al file Robots.txt ma non riceve alcuno status code HTTP (200 o 404) riproverà a scaricarlo più tardi finchè non otterrà uno status code. Per questo motivo è importante assicurarsi che il webserver risponda sempre a richieste del file robots.txt con status code HTTP 200, 403 o 404.
403 Robots.txt – restituendo uno status code HTTP 403 per richieste al Robots.txt indica che il file non esiste. Come risultato Google può ritenere di aver libero accesso a qualsiasi risorsa ospitata sul web server. Se il tuo Robots.txt restituisce uno status code HTTP 403 ed è una cosa non intenzionale, ti basta cambiare lo status code in 200 oppure 404.
[Regola obsoleta] Sovrascrivere le direttive User-Agent – quando direttive generiche vengono esplicitate prima di direttive specifiche. È importante notare che i motori di ricerca gestiscono i file robots.txt in modo diverso. Per impostazione predefinita, la prima direttiva corrispondente vince sempre. Tranne Google e Bing, gli altri bot seguono l’ordinamento delle regole del Robots.txt, Consiglio quindi di esplicitare le regole più specifiche prima delle regole più generiche. Vediamo questo esempio:
User-agent: *
Disallow: /about/
Allow: /chi-siamo/azienda/
Nell’esempio appena mostrato nessun bot, tranne Googlebot e Bingbot, potrebbe accedere alla pagina /chi-siamo/azienda/ dato che la prima regola impone un blocco. Googlebot e Bingbot invece seguono la regola della specificità: tra Disallow e Allow vince Allow se la direttiva è più lunga (quindi la regola più specifica). Per questo motivo è molto importante testare il robots.txt in Google Search Console. La versione corretta sarebbe:
User-agent: *
Allow: /chi-siamo/azienda/
Disallow: /about/
Robots.txt case sensitivity – l’URL del file Robots.txt e gli URL scritti all’interno del Robots.txt sono case-sensitive ovvero, il sistema fa differenza tra una lettera maiuscola e una minuscola. Per questo motivo potresti avere problemi a chiamare il tuo file ROBOTS.TXT oppure ad indicare al suo interno URL scritti mischiando maiuscolo e minuscolo.
Rimuovere il file robots.txt dai risultati di ricerca – questo è un caso raro ma a qualcuno potrebbe interessare rimuovere il file robots.txt dai risultati di Google. Per prevenire l’indicizzazione del file robots.txt e quindi la sua inclusione nei risultati di ricerca i webmaster possono usare l’intestazione HTTP con direttiva X-Robots-Tag noindex.
Importare Robots.txt totalmente chiusi – quando si sviluppa un nuovo sito web, sia in locale ma soprattutto online, il file Robots.txt viene solitamente (ho detto solitamente e sto esagerando!) chiuso con User-agent: * Disallow: /. Nel momento in cui si passa dalla fase di stage a quella live bisogna ricordarsi di rivedere il Robots.txt altrimenti il traffico organico sarà soltanto un miraggio.
Robots.txt Crawl-delay – alcuni siti includono nel file Robots.txt la direttiva “Crawl delay” (di cui avevo parlato in questo articolo) ma Google la ignora. Per controllare la frequenza di crawling di Googlebot è necessario usare le specifiche impostazioni in Google Search Console.

[WordPress] Bloccare la cartella wp-content – Inibire l’accesso alla cartella wp-content potrebbe impedire la corretta indicizzazione della pagina. wp-content infatti contiene molto spesso CSS, JS e altri file funzionali al tema utilizzato. Alcuni plugin e temi utilizzano JS presenti in wp-includes e da qui un altro errore che si andrebbe a commettere utilizzando un Robots.txt troppo chiuso.
Considerazioni finali
Il file Robots.txt è uno strumento che andrebbe utilizzato quando non esistono alternative migliori dal punto di vista SEO, oppure quando le alternative non sono praticabili a causa di limitazioni tecniche. Come abbiamo visto esistono metodi più efficaci che in alcuni casi è consigliabile usare in sostituzione del “Disallow” nel file Robots.txt.
Elena
Ha contribuito con 13 commentiCiao Giovanni,
grazie per l’ottimo post.
Ho notato che inserendo i comandi seguenti nel robots.txt di un sito web sviluppato con WordPress
Disallow: /wp-
Disallow: /wp-includes/
Disallow: /wp-content/
Allow: /wp-content/uploads/
il portale risulta non ottimizzato per i dispositivi mobile (test eseguito mediante tool di Google).
Mi chiedevo, quindi, se sia corretto inserire nel robots.txt tali comandi.
Cosa ne pensi?
Grazie in anticipo.
Giovanni Sacheli
👽 655 risposteCiao Elena grazie per il commento! Attenzione a bloccare l’accesso ad eventuali file CSS, immagini e Javascript che i browser (e Google) usano per renderizzare la pagina. Meglio un robots.txt totalmente aperto di uno chiuso senza criterio :) Ti consiglio di rieseguire il test con il robots.txt svuotato ed eventualmente aggiungere volta per volta delle limitazioni eseguendo sempre il test con Fetch as Google in Google Search Console.
A presto!
Elena
Ha contribuito con 13 commentiGrazie mille Giovanni.
Gentilissimo e utilissimo come sempre.
Buona giornata.
Filippo
Ha contribuito con 8 commentiCiao Giovanni,
come sempre grazie per le tue utili informazioni.
Solo questa parte mi lascia però dubbioso
***
Rimuovere il file robots.txt dai risultati di ricerca – per prevenire l’indicizzazione del file robots.txt e quindi la sua inclusione nei risultati di ricerca, i webmaster possono mettere in Disallow il Robots.txt attraverso lo stesso file robots.txt e poi rimuovendolo da Google Search Console. Un altro metodo è quello di usare X-Robots-Tag noindex nell’intestazione HTTP del file robots.txt.
***
Una volta avevo per errore mandato in disallow il file robot, con tutto il sito, e (giustamente) Google non percepiva più la modifica per riparare all’errore.
È stata una fatica fargli capire che il robots era cambiato e che quindi poteva tornare a leggerlo (e con lui tutto il resto del sito).
Io non lo escluderei mai per sicurezza
Giovanni Sacheli
👽 655 risposteCiao Filippo, grazie per avermi fatto notare un errore grossolano. In effetti quanto era scritto non aveva senso: se metti in disallow un file, Google non lo legge e quindi non riceve le direttive in esso contenute.
Ho corretto il testo inserendo che (è un caso molto particolare) l’unica soluzione ragionevole è usare l’intestazione HTTP con la direttiva X-Robots-Tag.
Grazie ancora, spero che non troverai altre inesattezze su questo blog :D
Luca Spinelli
Ha contribuito con 1 commentoLa direttiva “tutto aperto” che si ottiene con:
User-agent: *
Disallow:
Sitemap: …/sitemap.xml
Si può ottenere anche con:
User-agent: *
Sitemap: …/sitemap.xml
Oppure crea dei problemi un robots.txt scritto così? Non mi sono mai posto il problema e mi è venuto un serio dubbio.
Giovanni Sacheli
👽 655 risposteCiao Luca, la sintassi giusta è la prima che hai scritto. La seconda non è menzionata nella documentazione ufficiale – http://www.robotstxt.org/robotstxt.html. Nella definizione del formato puoi leggere
The record starts with one or more User-agent lines, followed by one or more Disallow lines, as detailed below. Unrecognised headers are ignored
Quindi devi usarli entrambi, in base allo standard un header non riconosciuto viene ignorato, poi ogni motore di ricerca reagirà a modo suo. A presto!
Altre info:
http://www.robotstxt.org/norobots-rfc.txt
https://www.w3.org/TR/html4/appendix/notes.html#h-B.4.1.1
https://en.wikipedia.org/wiki/Robots_exclusion_standard
Cris
Ha contribuito con 2 commentiCiao Giovanni,
Non mi è tanto chiara questa parte: “Sovrascrivere le direttive User-Agent”.
Cosa intendi? Potresti essere più specifico? Grazie
Giovanni Sacheli
👽 655 risposteCiao Chris, grazie del commento. È una considerazione oramai obsoleta ma ho aggiornato il testo per renderlo più comprensibile. Grazie per la segnalazione.