Robots.txt
Che cosa fa davvero robots.txt — controlla la scansione, non l’indicizzazione — oltre alla sintassi esatta, a come Google lo gestisce internamente e agli errori che danneggiano i siti.
Lingue
1 segnale di evidenza in questa pagina
- Strumento live correlatorobots.txt Tester
Robots.txt è un file di testo semplice nella radice di ogni host che indica ai crawler quali URL possono o non possono richiedere. Il punto fondamentale: controlla la scansione, non l’indicizzazione. Un URL non consentito può comunque essere indicizzato senza estratto se riceve link da altrove; per escludere una pagina dall’indice bisogna usare noindex, e la pagina NON deve essere bloccata in robots.txt, altrimenti Google non vedrà mai il noindex. Google supporta soltanto user-agent, allow, disallow e sitemap (noindex, nofollow e crawl-delay sono stati abbandonati il 1º settembre 2019). Il file si trova in /robots.txt, si applica a una sola combinazione di host+protocollo+porta, ha un limite di 500 KiB, viene memorizzato nella cache per circa 24 ore e un errore 4xx equivale all’assenza di restrizioni, mentre un errore 5xx può bloccare la scansione dell’intero sito. Non bloccare CSS/JS essenziali per il rendering e non affidarti a questo file per nascondere contenuti: è pubblico.
IN BREVE — Robots.txt è un file di testo nella radice del tuo sito che indica ai crawler quali URL possono richiedere. L’aspetto che quasi tutti fraintendono: controlla la scansione, non l’indicizzazione. Bloccare una pagina non la rimuove da Google: una pagina bloccata può comunque comparire nei risultati di ricerca, ma senza descrizione. Se vuoi escludere una pagina da Google, serve uno strumento diverso (
noindex) e non devi bloccarla in robots.txt, altrimenti Google non vedrà mai l’istruzione.
Che cos’è un file robots.txt
Quando un motore di ricerca vuole eseguire la scansione del tuo sito, per prima
cosa cerca il file https://yourdomain.com/robots.txt. Il file contiene un elenco
di istruzioni che indica ai crawler quali parti del sito possono o non possono
richiedere. È semplice testo e puoi leggere il robots.txt di qualsiasi sito
aggiungendo /robots.txt dopo il dominio.
Un esempio minimo è questo:
Evidence for this claim Cloudflare Radar summarizes which AI user-agent names were observed in robots.txt files during the 28 days ending 2026-07-30. Scope: A dated Cloudflare Radar context chart describing observed robots.txt patterns; it is not a recommendation or a site-specific policy measurement. Confidence: high · Verified: Cloudflare Radar: AI user agents found in robots.txtThe chart summarizes which AI user-agent names Cloudflare observed in robots.txt files during the selected four-week period.
User-agent: *
Disallow: /admin/
Sitemap: https://yourdomain.com/sitemap.xmlSignifica: tutti i crawler (*) non devono richiedere nulla sotto /admin/ e,
inoltre, la mia sitemap si trova qui.
Il concetto fondamentale: bloccare ≠ rimuovere
Questo è l’errore più comune in assoluto nella SEO, quindi lo dirò chiaramente: robots.txt impedisce la scansione di una pagina, non la sua indicizzazione. Evidence for this claim A robots.txt rule controls crawling rather than guaranteeing removal from Google Search; a URL can still appear when Google cannot crawl it. Scope: Google Search crawler behavior. Other crawlers can interpret robots.txt differently. Confidence: high · Verified: Google: Introduction to robots.txt
Sembrano la stessa cosa, ma non lo sono. La scansione consiste nel recupero e nella lettura della pagina da parte del motore. L’indicizzazione è la decisione del motore di conservarla e mostrarla nei risultati. Robots.txt blocca soltanto il primo passaggio.
Quindi, se blocchi una pagina in robots.txt, Google non la recupererà; tuttavia, se altre pagine contengono link verso quell’URL, Google può comunque indicizzare l’URL stesso e mostrarlo nei risultati. Comparirà semplicemente come un link senza descrizione, perché Google non ha mai potuto leggere la pagina per crearne una.
Se il tuo vero obiettivo è «rimuovere questa pagina da Google», robots.txt è lo
strumento sbagliato. Ti serve noindex, come meta tag nella pagina o intestazione
HTTP. Ecco l’insidia: un noindex funziona soltanto se Google può eseguire la
scansione della pagina e vederlo. Se blocchi la pagina in robots.txt e aggiungi
un noindex, Google non la scansiona, non vede il noindex e la pagina può restare
comunque nell’indice. Scegli una sola funzione: bloccare la scansione oppure
bloccare l’indicizzazione, non entrambe sullo stesso URL.
Lo strumento giusto per ogni obiettivo
- «Non sprecare risorse di scansione per questo contenuto.» →
robots.txtDisallow. - «Tieni questo contenuto fuori dall’indice di Google.» →
noindex(e non bloccarlo). - «Nessuno deve poter vedere questo contenuto.» → protezione con password / accesso.
Robots.txt è pubblico: chiunque può leggerlo, quindi elencarvi
/secret/comunica semplicemente al mondo che la cartella esiste.
Alcune regole che spesso causano problemi
- Un file per ogni host.
https://example.com,https://www.example.comehttps://blog.example.comhanno bisogno ciascuno del proprio robots.txt. Non lo condividono. - Si trova nella radice. Deve essere in
/robots.txt, tutto in minuscolo. Un file in una sottocartella non ha alcun effetto. - Non bloccare CSS e JavaScript. Google ha bisogno di questi file per vedere la pagina come la vede un visitatore. Bloccarli può danneggiarti.
Vuoi il riferimento completo alla sintassi, con i caratteri jolly, le regole di
corrispondenza di Allow/Disallow, il modo in cui Google gestisce un 404 rispetto
a un errore del server su robots.txt, crawl-delay e la gestione dei crawler di IA?
Passa alla scheda Avanzato.
IN BREVE — Robots.txt è un file di testo semplice nella radice di ogni host (
/robots.txt, in minuscolo) che implementa il Robots Exclusion Protocol (RFC 9309). Controlla la scansione, non l’indicizzazione: un URL non consentito può comunque essere indicizzato senza estratto se riceve link da altrove; per rimuoverlo dall’indice bisogna usarenoindexsu una pagina che non sia bloccata. Google supporta soltantouser-agent,allow,disallowesitemap;noindex/nofollow/crawl-delaysono stati abbandonati il 1º settembre 2019. L’ambito è una combinazione di host+protocollo+porta. Vince la regola più specifica, cioè con il percorso più lungo, e in caso di parità quella meno restrittiva;*e$sono i caratteri jolly; i percorsi distinguono maiuscole e minuscole. Google limita il file a 500 KiB, lo memorizza nella cache per circa 24 ore, considera i 4xx (tranne 429) come assenza di restrizioni e, con un 5xx, sospende la scansione per circa 12 ore prima di usare l’ultima copia valida per circa 30 giorni. Non bloccare CSS/JS essenziali per il rendering e non usarlo come controllo degli accessi: il file è pubblico.
Che cos’è e dove si trova
Robots.txt implementa il Robots Exclusion Protocol, creato da Martijn Koster nel 1994 e infine standardizzato nel 2022 come RFC 9309, scritto con il contributo di Gary Illyes, Henner Zeller e Lizzi Sassman di Google, oltre allo stesso Koster. Nelle parole dello standard: “This document specifies and extends the ‘Robots Exclusion Protocol’ method originally defined by Martijn Koster in 1994 for service owners to control how content served by their services may be accessed, if at all, by automatic clients known as crawlers.” (traduzione) «Questo documento specifica ed estende il metodo “Robots Exclusion Protocol”, originariamente definito da Martijn Koster nel 1994, affinché i titolari dei servizi possano controllare in che modo i contenuti forniti dai loro servizi possano essere consultati, o se possano esserlo, da client automatici noti come crawler.»
Alcuni fatti che spesso sorprendono:
- Deve trovarsi nella radice ed essere in minuscolo. RFC 9309 è esplicito: “The rules MUST be accessible in a file named ‘/robots.txt’ (all lowercase) in the top-level path of the service.” (traduzione) «Le regole DEVONO essere accessibili in un file denominato “/robots.txt” — tutto in minuscolo — nel percorso di livello superiore del servizio.» Google aggiunge che l’URL stesso distingue maiuscole e minuscole, come qualsiasi URL.
- L’ambito è un host + protocollo + porta. Google: “The rules listed in the
robots.txt file apply only to the host, protocol, and port number where the
robots.txt file is hosted.” (traduzione) «Le regole elencate nel file robots.txt si applicano soltanto all’host, al protocollo e al numero di porta su cui è ospitato il file robots.txt.» Quindi
https://example.com,https://www.example.com,https://blog.example.comehttp://example.comhanno bisogno ciascuno del proprio file. Sottodomini e protocolli non ne condividono uno. - I protocolli supportati da Google sono HTTP, HTTPS e FTP.
L’equivoco che definisce questo argomento: scansione e indicizzazione
Se ricordi una sola cosa di questa pagina, ricorda questa: robots.txt controlla la scansione, non l’indicizzazione. Bloccare un URL non equivale a rimuoverlo da Google. Evidence for this claim A robots.txt rule controls crawling rather than guaranteeing removal from Google Search; a URL can still appear when Google cannot crawl it. Scope: Google Search crawler behavior. Other crawlers can interpret robots.txt differently. Confidence: high · Verified: Google: Introduction to robots.txt
Il documento introduttivo di Google lo dice chiaramente: robots.txt “is not a mechanism for keeping
a web page out of Google. To keep a web page out of Google, block indexing with
noindex or password-protect the page.” (traduzione) «non è un meccanismo per escludere una pagina web da Google. Per escludere una pagina web da Google, blocca l’indicizzazione con noindex oppure proteggi la pagina con una password.» E riguardo a ciò che accade realmente a un URL bloccato: “While Google won’t crawl or index the content blocked by a robots.txt file,
we might still find and index a disallowed URL if it is linked from other places on
the web.” (traduzione) «Anche se Google non esegue la scansione né indicizza i contenuti bloccati da un file robots.txt, potremmo comunque trovare e indicizzare un URL non consentito se riceve link da altre parti del Web.» Il risultato è il noto elenco senza estratto: “its URL can still
appear in search results, but the search result won’t have a description.” (traduzione) «il suo URL può comunque comparire nei risultati di ricerca, ma il risultato non avrà una descrizione.»
La specifica ribadisce la stessa sfumatura per la regola disallow: “Google can’t
index the content of pages which are disallowed for crawling, but it may still
index the URL and show it in search results without a snippet.” (traduzione) «Google non può indicizzare il contenuto delle pagine la cui scansione non è consentita, ma può comunque indicizzare l’URL e mostrarlo nei risultati di ricerca senza estratto.»
Perché NON devi bloccare una pagina a cui vuoi applicare noindex
Questa è l’insidia che compromette silenziosamente i tentativi di rimozione
dall’indice. Un noindex funziona soltanto se Google può eseguire la scansione
della pagina e leggerlo. Il documento di Google sul blocco dell’indicizzazione
spiega chiaramente questa dipendenza: “For the noindex rule to be effective, the page or resource must not
be blocked by a robots.txt file, and it has to be otherwise accessible to the
crawler. If the page is blocked by a robots.txt file or the crawler can’t access
the page, the crawler will never see the noindex rule, and the page can still
appear in search results, for example if other pages link to it.” (traduzione) «Affinché la regola noindex sia efficace, la pagina o la risorsa non deve essere bloccata da un file robots.txt e deve essere altrimenti accessibile al crawler. Se la pagina è bloccata da un file robots.txt o il crawler non può accedervi, non vedrà mai la regola noindex e la pagina potrà comunque comparire nei risultati di ricerca, per esempio se altre pagine contengono link che la puntano.» Evidence for this claim Google must be able to crawl a URL to see a noindex rule; blocking the URL in robots.txt can prevent the rule from being observed. Scope: Google Search indexing controls for HTML meta robots and X-Robots-Tag rules. Confidence: high · Verified: Google: Block indexing with noindex
Quindi, se vuoi escludere una pagina dall’indice, il consiglio di John Mueller è il modo più semplice per ricordare la soluzione: quando vuoi rimuovere pagine dall’indice, non devi bloccare Google con robots.txt, ma usare noindex.
La prova concreta: ho bloccato due nostre pagine con ottimi posizionamenti
Non devo dimostrarlo soltanto in teoria. Nel mio esperimento in cui ho bloccato due pagine Ahrefs con ottimi posizionamenti, le ho bloccate deliberatamente in robots.txt e ho osservato che cosa è successo. Le pagine sono rimaste indicizzate e hanno mantenuto i posizionamenti: non sono scomparse. Abbiamo perso la freschezza garantita dalle nuove scansioni di Google: “We lost a position here or there and all of the featured snippets for the pages.” (traduzione) «Abbiamo perso una posizione qua e là e tutti gli snippet in primo piano delle pagine.» Il traffico è diminuito, ma meno di quanto mi aspettassi: “Both pages lost some traffic. But it didn’t result in much change to our traffic estimate like I was expecting.” (traduzione) «Entrambe le pagine hanno perso un po’ di traffico, ma ciò non ha modificato molto la nostra stima del traffico, contrariamente a quanto mi aspettavo.»
La mia conclusione dai dati: “Accidentally blocking pages (that Google already ranks) from being crawled using robots.txt probably isn’t going to have much impact on your rankings, and they will likely still show in the search results.” (traduzione) «Impedire accidentalmente tramite robots.txt la scansione di pagine che Google già posiziona probabilmente non avrà un grande impatto sui posizionamenti e le pagine continueranno verosimilmente a comparire nei risultati di ricerca.» E la versione senza mezzi termini: “Don’t block pages you want indexed. It hurts. Not as bad as you might think it does—but it still hurts.” (traduzione) «Non bloccare le pagine che vuoi indicizzare. Fa male. Non quanto potresti pensare, ma fa comunque male.»
Il rovescio della medaglia è rassicurante: quando Search Console segnala “Indexed, though blocked by robots.txt” (traduzione) «Indicizzata, anche se bloccata da robots.txt» per un URL di servizio, come carrelli, filtri o parametri inutili, di solito non è un problema. Come ha spiegato Mueller riguardo agli URL per aggiungere prodotti al carrello, bloccarli va bene e, anche se vengono «indicizzati», è improbabile che compaiano nei risultati, a meno che qualcuno non esegua una ricerca molto specifica per quegli URL, cosa che gli utenti reali non fanno. Distingui l’avviso dal tono allarmante da un problema effettivo: conta soltanto se l’URL bloccato è una pagina che volevi davvero far scansionare e indicizzare.
La sintassi (riferimento)
Un robots.txt è composto da gruppi. Ogni gruppo inizia con una o più righe
User-agent che indicano a quali crawler si applica, seguite dalle relative regole.
User-agent: *
Disallow: /cart/
Disallow: /search
Allow: /search/help
User-agent: Googlebot
Disallow: /no-google/
Sitemap: https://example.com/sitemap.xmlUser agent e gruppi. Un crawler rispetta esattamente un gruppo, quello con lo user agent più specifico che corrisponde al crawler, e ignora gli altri. Google: “Google’s crawlers determine the correct group of rules by finding in the robots.txt file the group with the most specific user agent that matches the crawler’s user agent. Other groups are ignored.” (traduzione) «I crawler di Google determinano il gruppo di regole corretto trovando nel file robots.txt il gruppo con lo user agent più specifico che corrisponde allo user agent del crawler. Gli altri gruppi vengono ignorati.» E ancora: “Only one group is valid for a particular crawler.” (traduzione) «Per uno specifico crawler è valido un solo gruppo.» (Bing si comporta allo stesso modo; ne parleremo più avanti.)
Questo significa anche che un gruppo specifico non viene integrato con le regole
del gruppo jolly: viene usato autonomamente, senza unirlo a User-agent: *. La
specifica Google afferma esplicitamente che “user agent specific groups and global groups (*) are not
combined.” (traduzione) «i gruppi specifici per user agent e i gruppi globali () non vengono combinati.»* Quindi, se crei un gruppo User-agent: googlebot-news,
deve essere autosufficiente: tutte le regole del gruppo * che vuoi continuare ad
applicare devono essere ripetute al suo interno, altrimenti Googlebot-News non le
vedrà affatto.
Disallow e Allow. Disallow elenca i percorsi che un crawler non deve
richiedere; Allow ricava eccezioni al loro interno. La regola disallow
“specifies paths that must
not be accessed by the crawlers identified by the user-agent line the disallow rule
is grouped with.” (traduzione) «specifica i percorsi a cui non devono accedere i crawler identificati dalla riga user-agent del gruppo a cui appartiene la regola disallow.» La regola allow “specifies paths that may be accessed by the
designated crawlers. When no path is specified, the rule is ignored.” (traduzione) «specifica i percorsi a cui possono accedere i crawler indicati. Quando non viene specificato alcun percorso, la regola viene ignorata.»
La regola di corrispondenza (quasi tutte le guide la spiegano male). Quando due
regole sono in conflitto, vince quella più specifica, dove «più specifica»
significa percorso più lungo: “When
matching robots.txt rules to URLs, crawlers use the most specific rule based on the
length of the rule path. In case of conflicting rules, including those with
wildcards, Google uses the least restrictive rule.” (traduzione) «Quando associano le regole di robots.txt agli URL, i crawler usano la regola più specifica in base alla lunghezza del percorso della regola. In caso di regole in conflitto, comprese quelle con caratteri jolly, Google usa la regola meno restrittiva.» Quindi, in caso di vera parità, vince la
regola meno restrittiva: Allow prevale su Disallow. RFC 9309 la definisce
“Longest Match” (traduzione: «corrispondenza più lunga») e afferma: “The following example shows that in the case of two rules,
the longest one is used for matching.” (traduzione) «L’esempio seguente mostra che, in presenza di due regole, per la corrispondenza viene utilizzata quella più lunga.» Evidence for this claim Google resolves matching robots.txt rules by path specificity and uses the least restrictive rule when equally specific rules conflict. Scope: Google crawler interpretation of robots.txt rules; other crawlers may implement different extensions. Confidence: high · Verified: Google: Robots.txt interpretation
Esempio pratico:
User-agent: *
Allow: /folder/page
Disallow: /folder/L’URL /folder/page corrisponde a entrambe le regole. Allow: /folder/page (12
caratteri) è più lungo di Disallow: /folder/ (8 caratteri), quindi vince la regola
Allow più lunga e specifica e la pagina può essere scansionata.
Caratteri jolly * e $. Google: “* designates 0 or more instances of any
valid character. $ designates the end of the URL.” (traduzione) « indica zero o più occorrenze di qualsiasi carattere valido. $ indica la fine dell’URL.»* Quindi Disallow: /*.pdf$ blocca
tutti gli URL che terminano in .pdf, mentre Disallow: /*? blocca tutti gli URL
contenenti una stringa di query. La corrispondenza avviene per prefisso:
Disallow: /fish corrisponde a /fish, /fish.html e /fish/salmon.html, ma
non a /Fish (distingue maiuscole e minuscole) o /catfish (è un prefisso, non
una sottostringa).
Distinzione tra maiuscole e minuscole (il dettaglio insidioso). I nomi dei
campi e degli user agent non distinguono maiuscole e minuscole; i valori dei
percorsi sì. Google: “Both the
user-agent field name and its value are case-insensitive,” (traduzione) «Sia il nome del campo user-agent sia il suo valore non distinguono maiuscole e minuscole» ma “The field name
(disallow) is case-insensitive, but its value is case-sensitive,” (traduzione) «Il nome del campo (disallow) non distingue maiuscole e minuscole, mentre il suo valore sì» e “The path
value must start with / to designate the root and the value is case-sensitive.” (traduzione) «Il valore del percorso deve iniziare con / per indicare la radice e distingue maiuscole e minuscole.»
Quindi Disallow: /Folder/ non blocca /folder/.
Sitemap. La direttiva Sitemap: accetta un URL assoluto completo ed è
indipendente dai gruppi: può trovarsi ovunque nel file.
Commenti. Tutto ciò che segue # viene ignorato: “To include comments, precede your
comment with the # character.” (traduzione) «Per includere commenti, anteponi al commento il carattere #.»
noindex, nofollow e crawl-delay NON sono direttive di robots.txt
È un mito persistente. Dal 1º settembre 2019, Google non supporta più le
regole non documentate e non previste dallo standard, tra cui noindex, nofollow
e crawl-delay. L’annuncio di Google si concentrava sulle regole non supportate
dalla bozza Internet, come crawl-delay, nofollow e noindex, osservando che Google
non le aveva mai documentate, e dichiarava che in quella data avrebbe ritirato
tutto il codice dedicato alle regole non supportate e non pubblicate, come noindex.
L’elenco dei campi supportati è breve e la specifica esplicita l’esclusione:
Google supporta user-agent, allow, disallow e sitemap, mentre “other fields such as
crawl-delay aren’t supported.” (traduzione) «altri campi, come crawl-delay, non sono supportati.»
Se usavi noindex in robots.txt, le alternative sono un meta tag noindex o
un’intestazione X-Robots-Tag, i codici di stato 404/410, la protezione con password,
un Disallow oppure lo strumento di rimozione di Search Console.
Come Google gestisce internamente robots.txt
- Limite di dimensione: 500 KiB. “Google enforces a robots.txt file size limit of 500 kibibytes (KiB). Content which is after the maximum file size is ignored.” (traduzione) «Google applica ai file robots.txt un limite di dimensione di 500 kibibyte (KiB). Il contenuto successivo alla dimensione massima viene ignorato.» RFC 9309 concorda: “The parsing limit MUST be at least 500 kibibytes [KiB].” (traduzione) «Il limite di analisi DEVE essere di almeno 500 kibibyte [KiB].»
- Cache: circa 24 ore. “Google generally caches the contents of robots.txt file for up to 24 hours, but may cache it longer in situations where refreshing the cached version isn’t possible.” (traduzione) «In genere Google memorizza nella cache il contenuto del file robots.txt per un massimo di 24 ore, ma può conservarlo più a lungo quando non è possibile aggiornare la versione memorizzata.» Una modifica, quindi, non viene necessariamente rilevata subito. Evidence for this claim Google generally caches robots.txt for up to 24 hours and changes crawling behavior according to the HTTP status returned for the file. Scope: Google crawler handling of robots.txt fetches, including documented 4xx, 5xx, and redirect behavior. Confidence: high · Verified: Google: Robots.txt file handling
- I codici di stato incidono sull’intero sito. È la parte ignorata dalla maggioranza delle guide:
- 4xx (tranne 429) → nessuna restrizione. “Google’s crawlers treat all 4xx
errors, except 429, as if a valid robots.txt file didn’t exist. This means that
Google assumes that there are no crawl restrictions.” (traduzione) «I crawler di Google trattano tutti gli errori 4xx, tranne 429, come se non esistesse un file robots.txt valido. Ciò significa che Google presume che non vi siano restrizioni alla scansione.» Un 404 su
/robots.txtsignifica «scansiona tutto». (Non usare 401/403 per limitare la scansione.) - 5xx / non raggiungibile → pericoloso. “For the first 12 hours, Google stops
crawling the site but keeps trying to fetch the robots.txt file. If Google can’t
fetch a new version, for the next 30 days Google will use the last good version,
while still trying to fetch a new version.” (traduzione) «Per le prime 12 ore, Google interrompe la scansione del sito ma continua a tentare di recuperare il file robots.txt. Se Google non riesce a recuperare una nuova versione, per i successivi 30 giorni utilizzerà l’ultima versione valida, continuando nel frattempo a cercarne una nuova.» Un errore del server su
/robots.txtpuò quindi impedire di fatto la scansione dell’intero sito per le prime 12 ore circa, dopodiché viene usata l’ultima copia valida per circa 30 giorni. Un robots.txt che restituisce errori persistenti rappresenta un rischio per la scansione di tutto il sito. Se dopo quei 30 giorni il problema persiste: “If the errors are still not fixed after 30 days: If the site is generally available to Google, Google will behave as if there is no robots.txt file (but still keep checking for a new version).” (traduzione) «Se gli errori non sono ancora stati risolti dopo 30 giorni: se il sito è generalmente disponibile per Google, Google si comporterà come se non esistesse alcun file robots.txt, continuando comunque a controllare se ne è disponibile una nuova versione.» In altre parole, un robots.txt che non si ripristina mai non rimane bloccante per sempre: Google finisce per riprendere la scansione senza restrizioni, come con un 404. - 3xx → Google segue almeno cinque passaggi di reindirizzamento, poi lo tratta come un 404.
- 4xx (tranne 429) → nessuna restrizione. “Google’s crawlers treat all 4xx
errors, except 429, as if a valid robots.txt file didn’t exist. This means that
Google assumes that there are no crawl restrictions.” (traduzione) «I crawler di Google trattano tutti gli errori 4xx, tranne 429, come se non esistesse un file robots.txt valido. Ciò significa che Google presume che non vi siano restrizioni alla scansione.» Un 404 su
robots.txt in Bing, Yandex e negli altri motori
Il raggruppamento e la sintassi sono sostanzialmente condivisi, ma contano due differenze:
- crawl-delay. Google lo ignora, Bing continua a rispettarlo e Yandex ha smesso nel 2018: la documentazione di Yandex dichiara “From February 22, 2018, Yandex doesn’t take into account the Crawl-delay directive,” (traduzione) «Dal 22 febbraio 2018, Yandex non tiene conto della direttiva Crawl-delay» e rimanda invece all’impostazione della frequenza di scansione in Yandex Webmaster. Bing afferma esplicitamente che “The robots.txt file is the only valid place to set a crawl-delay directive for MSNBot,” (traduzione) «Il file robots.txt è l’unico posto valido in cui impostare una direttiva crawl-delay per MSNBot» e che la direttiva “accepts only positive, whole numbers as values… the higher the value, the more throttled down the crawl rate will be.” (traduzione) «accetta come valori soltanto numeri interi positivi… quanto maggiore è il valore, tanto più viene limitata la frequenza di scansione.» Nota che Bing interpreta il valore come limitazione relativa, non letteralmente come N secondi.
- L’insidia della sezione bingbot. Come nella regola di Google “only one group
per crawler” (traduzione) «un solo gruppo per crawler», se crei una sezione
User-agent: bingbot, Bing applica soltanto quella sezione e ignora le impostazioni predefinite diUser-agent: *, fatta eccezione per crawl-delay. Un gruppo specifico per bingbot deve quindi ripetere tutte le direttive che vuoi continuare ad applicare. - Cache e comportamento in caso di errore di Amazon. Amazon dichiara che i suoi crawler possono usare una copia di robots.txt memorizzata nella cache nei 30 giorni precedenti. Se non riescono a recuperare il file, si comportano come se non esistesse. Uno strumento di controllo può riferire quale copia ha recuperato, ma non può dimostrare quale versione memorizzata abbia usato Amazon, né che Amazon abbia osservato lo stesso errore dello strumento. Evidence for this claim Amazon says its crawlers may use a robots.txt copy cached within the previous 30 days and behave as though the file does not exist when they cannot fetch it. Scope: Amazon crawler behavior only; a checker result cannot establish which cached copy Amazon used or whether Amazon observed the same fetch failure. Confidence: high · Verified: Amazon: Amazonbot
Gestire i crawler di IA con robots.txt
Robots.txt è attualmente lo strumento principale per gestire i crawler di IA, che rispettano la stessa sintassi di gruppi e user agent. Il problema è che si tratta di token distinti, quindi bloccarne uno non blocca gli altri.
- OpenAI gestisce diversi bot distinti e i controlli di ciascuno sono
indipendenti: consentirne uno non consente gli altri e bloccarne uno non blocca
gli altri.
GPTBotscansiona contenuti per addestrare i modelli di OpenAI;OAI-SearchBotmostra i siti nelle funzioni di ricerca di ChatGPT;OAI-AdsBotcontrolla la sicurezza delle pagine presentate come annunci e i suoi dati non vengono usati per l’addestramento. Blocca l’addestramento conUser-agent: GPTBot/Disallow: /: questa misura da sola non fermerà i bot di ricerca o pubblicitari.ChatGPT-Userè ancora diverso: viene attivato dalle azioni di una persona in ChatGPT o in un Custom GPT, non dalla scansione automatica, e OpenAI dichiara che “robots.txt rules may not apply” (traduzione) «le regole di robots.txt potrebbero non applicarsi»; non fare quindi affidamento suDisallowper tenerlo fuori. Se modifichi ciò cheOAI-SearchBotpuò scansionare, OpenAI segnala che l’aggiornamento può impiegare circa 24 ore per raggiungere i suoi sistemi di ricerca. - Google-Extended controlla l’addestramento di Gemini/Vertex ed è separato da Googlebot.
- Altri nomi da conoscere:
CCBot(Common Crawl),ClaudeBot(Anthropic),PerplexityBoteBytespider.
L’avvertenza fondamentale è che il rispetto delle regole è volontario. Robots.txt formula richieste, non le impone. I crawler corretti le rispettano; gli strumenti di estrazione automatica possono ignorarle e spesso lo fanno. Se devi davvero tenere qualcosa lontano da un bot, è un problema di autenticazione o blocco, non di robots.txt.
Errori comuni (e relative correzioni)
Il file restituisce 200, ma in realtà non è un file robots utilizzabile. Il
solo stato non basta. Acquisisci il Content-Type della risposta e i primi byte:
un modello CDN o di errore personalizzato può restituire HTML in /robots.txt con
200; ciò deve generare un avviso, non un esito «consenti tutto». Google documenta
robots.txt come testo semplice UTF-8 e può ignorare caratteri non validi. Un singolo
BOM UTF-8 all’inizio è tollerato, ma un secondo BOM, un BOM nel mezzo, byte UTF-16,
NUL o caratteri invisibili o di controllo possono modificare il primo token o
invalidare una riga. Mostra l’offset del byte e la riga interessata; non normalizzare
silenziosamente il file prima di comunicare all’utente che cosa ha ricevuto il
crawler. Applica il limite effettivo di analisi di Google di 500 KiB
prima di calcolare i risultati allow/disallow, continuando però a segnalare la
parte finale scartata.
- Bloccare una pagina che vuoi anche rimuovere dall’indice. Blocco + noindex impedisce a Google di scansionarla e vedere il noindex. Usa noindex senza il blocco.
- Usare robots.txt per rimuovere pagine dall’indice. È lo strumento completamente sbagliato: questo è il compito di noindex.
- Bloccare CSS/JS essenziali per il rendering. Google ha bisogno di queste risorse
per vedere la pagina come un utente; l’esempio di robots.txt di Google consente
nuovamente in modo esplicito
.css/.jsaffinché Googlebot possa scansionarli. - Tentare di nascondere dati sensibili. RFC 9309 è categorico: “The Robots Exclusion
Protocol is not a substitute for valid content security measures. Listing paths
in the robots.txt file exposes them publicly and thus makes the paths
discoverable.” (traduzione) «Il Robots Exclusion Protocol non sostituisce misure valide di sicurezza dei contenuti. Elencare percorsi nel file robots.txt li espone pubblicamente e li rende quindi individuabili.» Non consentire
/secret-admin/equivale letteralmente a pubblicizzarlo. Usa l’autenticazione. - Un
Disallow: /fuori posto. Blocca l’intero sito per il crawler indicato: il classico residuo dell’ambiente di preparazione che fa sparire un sito da Google. - Ignorare il codice di risposta di
/robots.txt. Un 5xx può bloccare la scansione dell’intero sito; considera la disponibilità del file essenziale per la produzione.
Per comprendere il processo più ampio di cui fa parte — individuazione, pianificazione della scansione, rendering e differenza tra scansione e indicizzazione — consulta l’hub sulla scansione. Gli argomenti correlati, ovvero budget di scansione e gestione delle sitemap da parte di Google, approfondiscono ciascuno un elemento specifico.
Riepilogo AI
Una sintesi della versione avanzata:
- Robots.txt = un file di testo semplice nella radice di ogni host (
/robots.txt, in minuscolo) che implementa il Robots Exclusion Protocol (RFC 9309, 2022; origine nel 1994). L’URL distingue tra maiuscole e minuscole. - Controlla la scansione, non l’indicizzazione. Questo è il mito numero uno.
Un URL non consentito può comunque essere indicizzato — mostrato come semplice
URL senza descrizione — se riceve link da altrove. Per escludere una pagina
dall’indice, usa
noindex; la pagina non deve essere bloccata in robots.txt, altrimenti Google non la scansionerà mai e non vedrà il noindex. - L’esperimento di Patrick lo ha dimostrato: bloccare due pagine ben posizionate non le ha rimosse dall’indice: hanno continuato a posizionarsi, ma hanno perso featured snippet e descrizioni. “Don’t block pages you want indexed. It hurts.” (traduzione) «Non bloccare le pagine che vuoi indicizzare. Fa male.»
- Lo strumento giusto per ogni attività: robots.txt = controllo della scansione;
noindex= controllo dell’indicizzazione; password/autenticazione = riservatezza (robots.txt è pubblico). - Campi supportati:
user-agent,allow,disallow,sitemap. Non supportati da Google:noindex,nofollow,crawl-delay(ritirati il 1° settembre 2019). - L’ambito è un singolo host + protocollo + porta: ogni sottodominio/protocollo necessita del proprio file.
- Corrispondenza: prevale la regola più specifica (con il percorso più lungo);
a parità, quella meno restrittiva (Allow). I caratteri jolly sono
*e$; i valori dei percorsi distinguono tra maiuscole e minuscole. Un gruppo specifico non viene unito al gruppo*: è autonomo. - Dietro le quinte: limite di 500 KiB; cache di circa 24 ore; 4xx (tranne 429) → nessuna restrizione; 5xx/non raggiungibile → sospensione della scansione per circa 12 ore, poi ultima copia valida per circa 30 giorni, quindi nessuna restrizione se il problema persiste; 3xx → segue almeno 5 reindirizzamenti e poi tratta la risposta come un 404.
- Altri motori: Bing rispetta
crawl-delay; Google lo ignora e Yandex ha smesso di rispettarlo nel febbraio 2018 (usa l’impostazione della frequenza di scansione in Yandex Webmaster). Una sezionebingbotfa sì che Bing ignori le impostazioni predefinite di*. - Crawler AI (GPTBot, OAI-SearchBot, OAI-AdsBot, ChatGPT-User,
Google-Extended, CCBot, ClaudeBot, PerplexityBot, Bytespider) sono token separati
con controlli indipendenti: bloccarne uno non impedisce agli altri di eseguire
la scansione.
ChatGPT-Userviene attivato dall’utente, non automaticamente, quindi robots.txt potrebbe non applicarsi affatto; in generale, il rispetto delle regole da parte dei crawler è volontario. - Non bloccare CSS/JS essenziali per il rendering, non usarlo per nascondere
dati sensibili (è pubblico) e controlla che non sia presente per errore un
Disallow: /.
Documentazione ufficiale
Documentazione di prima mano fornita dai motori di ricerca e dallo standard stesso.
- Introduzione a robots.txt — il documento introduttivo, compresa l’avvertenza sulla differenza tra scansione e indicizzazione. Inizia da qui.
- Creare e inviare un file robots.txt / Come Google interpreta la specifica robots.txt — il riferimento completo: campi supportati, raggruppamento, corrispondenza, caratteri jolly, limite di dimensione, cache e gestione dei codici di stato.
- Bloccare l’indicizzazione nella Ricerca con noindex — perché una pagina con
noindexNON deve essere bloccata in robots.txt. - Nota sulle regole non supportate in robots.txt (luglio 2019) — l’annuncio che il supporto per
noindex,nofollowecrawl-delaytermina il 1° settembre 2019.
Lo standard
- RFC 9309 — Robots Exclusion Protocol — lo standard IETF (Koster, Illyes, Zeller, Sassman; settembre 2022), comprendente il requisito relativo alla posizione di
/robots.txt, la regola della corrispondenza più lunga, il limite di analisi di 500 KiB e la nota sulle considerazioni di sicurezza.
Bing / Microsoft
- Indicazioni per Bingbot — le attuali indicazioni di Bing Webmaster documentano valori di
crawl-delaycompresi tra 1 e 20 secondi. - Come creare un file robots.txt (guida di Bing Webmaster Tools) — le indicazioni di Bing su robots.txt e il relativo strumento di test.
Citazioni dalla fonte
Dichiarazioni ufficiali di Google, Bing e dell’RFC. Ogni link è un collegamento diretto che porta al passaggio citato nella pagina della fonte.
Google — scansione, non indicizzazione
- “This is used mainly to avoid overloading your site with requests; it is not a mechanism for keeping a web page out of Google. To keep a web page out of Google, block indexing with
noindexor password-protect the page.” (traduzione) «Serve principalmente a evitare di sovraccaricare il sito di richieste; non è un meccanismo per escludere una pagina web da Google. Per escludere una pagina web da Google, blocca l’indicizzazione con noindex oppure proteggi la pagina con una password.» — Documentazione di Google Search Central. Vai alla citazione - “While Google won’t crawl or index the content blocked by a robots.txt file, we might still find and index a disallowed URL if it is linked from other places on the web.” (traduzione) «Sebbene Google non esegua la scansione né indicizzi i contenuti bloccati da un file robots.txt, potrebbe comunque trovare e indicizzare un URL non consentito se questo riceve link da altre parti del Web.» Vai alla citazione
- “If your web page is blocked with a robots.txt file, its URL can still appear in search results, but the search result won’t have a description.” (traduzione) «Se la tua pagina web è bloccata con un file robots.txt, il suo URL può comunque comparire nei risultati di ricerca, ma il risultato non avrà una descrizione.» Vai alla citazione
Google — perché una pagina con noindex deve rimanere scansionabile
- “For the
noindexrule to be effective, the page or resource must not be blocked by a robots.txt file, and it has to be otherwise accessible to the crawler. If the page is blocked by a robots.txt file or the crawler can’t access the page, the crawler will never see thenoindexrule, and the page can still appear in search results, for example if other pages link to it.” (traduzione) «Affinché la regola noindex sia efficace, la pagina o la risorsa non deve essere bloccata da un file robots.txt e deve essere comunque accessibile al crawler. Se la pagina è bloccata da un file robots.txt o il crawler non riesce ad accedervi, il crawler non vedrà mai la regola noindex e la pagina potrà comunque comparire nei risultati di ricerca, per esempio se altre pagine contengono link che rimandano a essa.» — Documentazione di Google Search Central. Vai alla citazione
Google — posizione, ambito e specifica
- “The rules listed in the robots.txt file apply only to the host, protocol, and port number where the robots.txt file is hosted.” (traduzione) «Le regole elencate nel file robots.txt si applicano esclusivamente all’host, al protocollo e al numero di porta in cui è ospitato il file robots.txt.» Vai alla citazione
- “Google can’t index the content of pages which are disallowed for crawling, but it may still index the URL and show it in search results without a snippet.” (traduzione) «Google non può indicizzare il contenuto delle pagine la cui scansione non è consentita, ma può comunque indicizzarne l’URL e mostrarlo nei risultati di ricerca senza uno snippet.» Vai alla citazione
- “When matching robots.txt rules to URLs, crawlers use the most specific rule based on the length of the rule path. In case of conflicting rules, including those with wildcards, Google uses the least restrictive rule.” (traduzione) «Per associare le regole di robots.txt agli URL, i crawler scelgono quella con il percorso più lungo. Se le regole sono in conflitto, anche con caratteri jolly, Google applica quella meno restrittiva.» Vai alla citazione
- “
*designates 0 or more instances of any valid character.$designates the end of the URL.” (traduzione) «Il simbolo * corrisponde a qualsiasi sequenza di caratteri validi, anche vuota; $ ancora la corrispondenza alla fine dell’URL.» Vai alla citazione - “The field name (
disallow) is case-insensitive, but its value is case-sensitive.” (traduzione) «Il nome del campo (disallow) non distingue tra maiuscole e minuscole, mentre il suo valore sì.» Vai alla citazione
Google — dimensione, cache e codici di stato
- “Google enforces a robots.txt file size limit of 500 kibibytes (KiB). Content which is after the maximum file size is ignored.” (traduzione) «Google impone un limite di dimensione di 500 kibibyte (KiB) per il file robots.txt. Il contenuto successivo alla dimensione massima del file viene ignorato.» Vai alla citazione
- “Google generally caches the contents of robots.txt file for up to 24 hours, but may cache it longer in situations where refreshing the cached version isn’t possible.” (traduzione) «In genere Google conserva nella cache il contenuto del file robots.txt per un massimo di 24 ore, ma può conservarlo più a lungo quando non è possibile aggiornare la versione memorizzata nella cache.» Vai alla citazione
- “Google’s crawlers treat all 4xx errors, except 429, as if a valid robots.txt file didn’t exist. This means that Google assumes that there are no crawl restrictions.” (traduzione) «I crawler di Google trattano tutti gli errori 4xx, tranne il 429, come se non esistesse un file robots.txt valido. Ciò significa che Google presume che non vi siano restrizioni alla scansione.» Vai alla citazione
- “For the first 12 hours, Google stops crawling the site but keeps trying to fetch the robots.txt file. If Google can’t fetch a new version, for the next 30 days Google will use the last good version, while still trying to fetch a new version.” (traduzione) «Nelle prime 12 ore Google sospende la scansione del sito e continua a richiedere robots.txt. Se non ottiene una versione nuova, nei 30 giorni seguenti applica l’ultima copia valida e prosegue i tentativi di aggiornamento.» Vai alla citazione
- “If the errors are still not fixed after 30 days: If the site is generally available to Google, Google will behave as if there is no robots.txt file (but still keep checking for a new version).” (traduzione) «Se gli errori non sono ancora stati corretti dopo 30 giorni: se il sito è generalmente disponibile per Google, Google si comporterà come se non esistesse alcun file robots.txt, continuando comunque a verificare la presenza di una nuova versione.» Vai alla citazione
- “User agent specific groups and global groups (
*) are not combined.” (traduzione) «I gruppi specifici per uno user agent e i gruppi globali () non vengono combinati.»* Vai alla citazione
RFC 9309 — lo standard
- “This document specifies and extends the ‘Robots Exclusion Protocol’ method originally defined by Martijn Koster in 1994 for service owners to control how content served by their services may be accessed, if at all, by automatic clients known as crawlers.” (traduzione) «Questo documento specifica ed estende il metodo “Robots Exclusion Protocol”, definito originariamente da Martijn Koster nel 1994, affinché i proprietari dei servizi possano controllare in che modo i contenuti forniti dai loro servizi possano essere consultati, se consentito, da client automatici noti come crawler.» — RFC 9309 (Koster, Illyes, Zeller, Sassman). Vai alla citazione
- “The rules MUST be accessible in a file named ‘/robots.txt’ (all lowercase) in the top-level path of the service.” (traduzione) «Le regole DEVONO essere accessibili in un file denominato ‘/robots.txt’ (tutto in minuscolo) nel percorso di primo livello del servizio.» Vai alla citazione
- “The Robots Exclusion Protocol is not a substitute for valid content security measures. Listing paths in the robots.txt file exposes them publicly and thus makes the paths discoverable.” (traduzione) «Il Robots Exclusion Protocol non sostituisce valide misure di sicurezza dei contenuti. Elencare percorsi nel file robots.txt li rende pubblici e quindi individuabili.» Vai alla citazione
Bing — crawl-delay
- Bingbot guidance documenta un intervallo di
crawl-delaycompreso tra 1 e 20 secondi. Si tratta di indicazioni specifiche per Bing, non di un’estensione elaborata da Google.
Patrick Stox — l’esperimento di blocco (il mio esperimento per Ahrefs, revisionato da Joshua Hardwick)
- “We lost a position here or there and all of the featured snippets for the pages.” (traduzione) «Abbiamo perso una posizione qua e là e tutti i featured snippet delle pagine.» Vai alla citazione
- “Both pages lost some traffic. But it didn’t result in much change to our traffic estimate like I was expecting.” (traduzione) «Entrambe le pagine hanno perso un po’ di traffico. Ma la nostra stima del traffico non è cambiata molto, contrariamente a quanto mi aspettavo.» Vai alla citazione
- “Don’t block pages you want indexed. It hurts. Not as bad as you might think it does—but it still hurts.” (traduzione) «Non impedire la scansione delle pagine che vuoi indicizzare: è dannoso. Meno di quanto potresti immaginare, ma resta dannoso.» Vai alla citazione
Robots.txt — scheda rapida della sintassi
Direttive supportate da Google
| Direttiva | Funzione | Esempio |
|---|---|---|
User-agent: | Avvia un gruppo e indica i crawler a cui si applica. | User-agent: Googlebot |
Disallow: | Percorsi che il crawler non deve richiedere. | Disallow: /cart/ |
Allow: | Crea un’eccezione all’interno di un Disallow. | Allow: /cart/help |
Sitemap: | URL assoluto di una sitemap (indipendente dai gruppi). | Sitemap: https://x.com/sitemap.xml |
Caratteri speciali
| Token | Significato |
|---|---|
* | In un percorso: zero o più caratteri qualsiasi. Come user-agent: tutti i crawler. |
$ | Fissa la fine dell’URL. Disallow: /*.pdf$ blocca gli URL che terminano con .pdf. |
# | Commento: tutto ciò che segue sulla riga viene ignorato. |
/ | I valori dei percorsi devono iniziare con /. Disallow: / blocca l’intero sito. |
Regole di corrispondenza
- Prevale la regola più specifica, ossia quella con il percorso più lungo.
- A parità, prevale la regola meno restrittiva:
Allowha la precedenza suDisallow. - I valori dei percorsi distinguono tra maiuscole e minuscole (
/Folder/≠/folder/); i nomi dei campi e degli user-agent non fanno questa distinzione. - Un crawler rispetta esattamente un gruppo: quello con la corrispondenza più specifica per lo user-agent.
Non supportati da Google (ritirati il 1° settembre 2019): noindex,
nofollow, crawl-delay. Bing rispetta ancora crawl-delay (come limitazione
relativa, non come numero letterale di secondi); Yandex ha smesso di rispettarlo
il 22 febbraio 2018: imposta invece la frequenza di scansione in Yandex Webmaster.
Dietro le quinte (Google)
- Limite di dimensione: 500 KiB (il resto viene ignorato). Cache: circa 24 ore.
- 4xx (tranne 429) → nessuna restrizione. 5xx/non raggiungibile → sospensione della scansione per circa 12 ore, poi ultima copia valida per circa 30 giorni, quindi nessuna restrizione se il problema persiste. 3xx → almeno 5 reindirizzamenti, poi trattato come un 404.
- Un gruppo
User-agentspecifico non viene mai unito al gruppo*.
Ricette comuni
# Block a folder for everyone
User-agent: *
Disallow: /admin/
# Block all PDFs
User-agent: *
Disallow: /*.pdf$
# Block AI training crawler (won't stop search bots)
User-agent: GPTBot
Disallow: /
# Point to the sitemap
Sitemap: https://example.com/sitemap.xml Lista di controllo per l’audit di robots.txt
- Il file esiste esattamente all’indirizzo
https://yourdomain.com/robots.txt(nella radice, in minuscolo) e restituisce un200. - Ogni host e protocollo ha il proprio file (
www, senzawww, sottodomini,httprispetto ahttps). - Non è presente per errore un
Disallow: /che blocchi l’intero sito (il classico residuo dell’ambiente di staging). - Non stai bloccando una pagina sulla quale vuoi anche applicare
noindex(Google deve scansionarla per vedere il noindex). - Non stai usando robots.txt per rimuovere pagine dall’indice: è compito di
noindex. - CSS/JS essenziali per il rendering non sono bloccati.
- Non ci sono righe
noindex,nofollowocrawl-delayrivolte a Google (non supportate dal 1° settembre 2019). - Non sono elencati percorsi sensibili: il file è pubblico e pubblicizza tutto ciò che nomina; usa invece l’autenticazione.
- Le regole con caratteri jolly (
*,$) sono state testate su URL reali; ricorda che i valori dei percorsi distinguono tra maiuscole e minuscole. - Se hai una sezione
User-agent: bingbot(o specifica per qualsiasi altro bot), questa ripete tutte le direttive che vuoi continuare ad applicare: i gruppi specifici per bot ignorano le impostazioni predefinite di*. - È presente una direttiva
Sitemap:con un URL assoluto. - Il file è inferiore a 500 KiB.
- Il file è stato convalidato nel rapporto robots.txt di Search Console; sono stati controllati a campione gli URL con stato “Indexed, though blocked by robots.txt” per confermare che siano davvero irrilevanti e non pagine che volevi fossero scansionate.
I modelli mentali
1. Controllo della scansione, non dell’indicizzazione. Robots.txt stabilisce soltanto se un crawler può recuperare un URL. Non dice nulla sul fatto che l’URL venga indicizzato. Interiorizza questo concetto e la maggior parte degli errori relativi a robots.txt scomparirà. Bloccare un URL ≠ rimuoverlo da Google.
2. Prevale la regola più specifica; quella meno restrittiva risolve le parità.
Quando due regole riguardano lo stesso URL, prevale quella con il percorso più
lungo. In caso di effettiva parità, Allow ha la precedenza su Disallow. Questa
singola regola spiega quasi tutti i dubbi del tipo “perché questo URL è
scansionabile / bloccato?”.
3. Blocco o noindex: un albero decisionale.
- Vuoi escluderlo dall’indice? →
noindex, assicurandoti che non sia bloccato in robots.txt (così Google può scansionarlo e vedere il noindex). - Vuoi evitare di sprecare risorse di scansione, ma non ti importa se viene
mostrato il semplice URL? →
Disallowin robots.txt. - Vuoi renderlo davvero privato? → autenticazione. Robots.txt è pubblico e non nasconde mai nulla.
Non bloccare mai lo stesso URL applicando anche noindex: le due istruzioni si neutralizzano e la pagina può rimanere nell’indice.
4. La disponibilità del file è essenziale in produzione.
Il codice di risposta HTTP di /robots.txt ha conseguenze per l’intero sito: un
4xx significa “nessuna restrizione”, mentre un 5xx può interrompere la scansione
dell’intero sito da parte di Google per circa 12 ore. Tratta /robots.txt come
qualsiasi altro endpoint essenziale.
Recuperare e controllare robots.txt su più host
Robots.txt ha un ambito specifico per ogni combinazione host+protocollo+porta, quindi è facile dimenticare l’esistenza di una variante. Questo script recupera ogni variante di un dominio e segnala quelle che restituiscono un errore o un 404.
macOS / Linux
for url in "https://example.com/robots.txt" "https://www.example.com/robots.txt" "http://example.com/robots.txt"; do
code=$(curl -s -o /dev/null -w "%{http_code}" "$url")
echo "$code $url"
doneWindows (PowerShell)
$urls = "https://example.com/robots.txt","https://www.example.com/robots.txt","http://example.com/robots.txt"
foreach ($u in $urls) {
$r = Invoke-WebRequest -Uri $u -UseBasicParsing -SkipHttpErrorCheck
Write-Host "$($r.StatusCode) $u"
}Un 200 su ogni riga è il risultato desiderato. Un 4xx significa che Google
considera quella combinazione host+protocollo priva di restrizioni (va bene, se è
intenzionale); un 5xx è pericoloso, perché può sospendere la scansione di
quell’host.
Espressione regolare per estrarre ogni percorso Disallow/Allow
Utile per confrontare un file robots.txt prima e dopo una modifica oppure per automatizzare un controllo su un elenco di URL che ti interessano.
import re
robots_txt = open("robots.txt").read()
# Captures the directive (Disallow/Allow) and its path value
pattern = re.compile(r'^(Disallow|Allow):\s*(\S*)', re.IGNORECASE | re.MULTILINE)
for directive, path in pattern.findall(robots_txt):
print(f"{directive}: {path or '(empty — matches nothing)'}")(Disallow|Allow)— acquisisce la direttiva che è stata attivata.\s*(\S*)— acquisisce il valore del percorso, consentendo unDisallow:vuoto (che Google interpreta come “non vietare nulla”).re.IGNORECASE— i nomi dei campi non distinguono tra maiuscole e minuscole, mentre i valori dei percorsi sì (quando estendi questo script, non convertire i percorsi stessi in minuscolo).
Frammento per la Console di Chrome DevTools
Incollalo nel pannello Console (F12 → Console) di qualsiasi pagina per recuperare e stampare il file robots.txt dell’host senza uscire dalla scheda:
fetch(new URL('/robots.txt', location.origin))
.then(r => r.text())
.then(t => console.log(t))
.catch(e => console.error('No robots.txt or fetch blocked:', e));Bookmarklet: vai al file robots.txt del sito corrente
Salvalo come preferito usando questo contenuto come URL (trascinalo nella barra dei preferiti oppure aggiungilo manualmente e incolla il codice nel campo “URL”), quindi fai clic sul preferito da qualsiasi pagina:
javascript:(function(){var u=new URL('/robots.txt',location.origin).href;location.href=u;})(); Strumenti per testare e convalidare robots.txt
- Google Search Console — rapporto robots.txt (Impostazioni) — l’attuale sezione di Google in cui vedere il robots.txt recuperato da Google, il suo stato ed eventuali problemi di parsing. (Il vecchio tester autonomo di robots.txt è stato ritirato; ora i test si trovano in questo rapporto.)
- Controllo URL di GSC — verifica se la scansione di un URL specifico è bloccata e come lo vede attualmente Google.
- “Indexed, though blocked by robots.txt” di GSC (rapporto Pagine) — mostra gli URL indicizzati da Google nonostante il blocco, così puoi decidere quali rappresentano problemi reali.
- Bing Webmaster Tools — tester e indicazioni per robots.txt — l’equivalente di Bing per convalidare il file rispetto a bingbot.
- Ahrefs Site Audit / Screaming Frog SEO Spider — esegui la scansione del tuo sito per vedere quali URL sono bloccati, individuare pagine vietate per errore e verificare che le regole corrispondano agli URL desiderati.
- Qualsiasi browser — il controllo più semplice: apri
yourdomain.com/robots.txte leggilo. Ricorda che chiunque altro può fare lo stesso.
Incidente: hai pubblicato Disallow: / in produzione
È il classico residuo dell’ambiente di staging: un robots.txt creato per bloccare
lo staging viene distribuito sul sito pubblico e User-agent: * / Disallow: /
blocca tutto. Ecco la procedura di ripristino, nell’ordine corretto.
Passaggio 1 — verifica l’estensione del problema.
Recupera subito https://yourdomain.com/robots.txt (con un browser o
curl -I). Se trovi un semplice Disallow: / sotto User-agent: *, senza una
regola Allow: più specifica che riapra qualche percorso, ogni crawler che
rispetta robots.txt è attualmente bloccato sull’intero sito. Passa al passaggio 2.
Passaggio 2 — correggi il file e verifica la distribuzione.
Sostituiscilo con le regole previste (oppure con il minimo
User-agent: * / Allow: / se non sai con certezza cosa debba contenere) e
pubblicalo. Recupera di nuovo l’URL pubblico: non fidarti del pannello di
controllo della distribuzione, ma della risposta effettiva. Se mostra ancora il
vecchio Disallow: /, hai un problema di cache/CDN, non di codice: svuota la
cache per quel singolo percorso prima di proseguire.
Passaggio 3 — controlla per quanto tempo il sito è rimasto bloccato. Google conserva robots.txt nella cache fino a circa 24 ore, quindi una correzione appena pubblicata non viene rilevata immediatamente. Apri il rapporto robots.txt di Search Console per vedere quando Google ha recuperato il file l’ultima volta e se ha già rilevato la versione corretta. Non esiste un’opzione manuale per richiedere un nuovo recupero: devi aspettare oppure usare Controllo URL sulle pagine più importanti e selezionare “Richiedi indicizzazione” dopo aver verificato che il file sia stato corretto.
Passaggio 4 — verifica se ci sono stati danni effettivi.
- Se il blocco è durato alcune ore, aspettati un impatto visibile minimo o nullo: Google non rimuove le pagine dall’indice solo perché una scansione è stata bloccata.
- Se è durato da alcuni giorni a diverse settimane, controlla nel rapporto Pagine di Search Console se è aumentato il numero di URL con stato “Blocked by robots.txt” e se pagine precedentemente indicizzate sono passate a tale stato. Nel mio esperimento, le due pagine ben posizionate che avevo bloccato sono rimaste indicizzate e hanno mantenuto perlopiù il posizionamento, ma hanno perso segnali di freschezza e featured snippet: il danno aumenta con il tempo trascorso sotto blocco, non si verifica all’istante.
- Se nel rapporto sul rendimento di Search Console noti un calo effettivo di posizionamenti o impressioni durante il periodo del blocco, hai la conferma che l’incidente ha avuto un impatto reale e non è stato soltanto un falso allarme.
Passaggio 5 — verifica che la correzione abbia funzionato, senza limitarti a presumerlo. Controlla i percorsi specifici che ti interessano con il Robots.txt Tester usando il file corretto. Se uno di essi risulta ancora bloccato, il lavoro non è finito: torna al passaggio 2.
Errori concreti da evitare
Bloccare in robots.txt una pagina a cui vuoi applicare anche noindex.
Perché è sbagliato: noindex funziona soltanto se il crawler può leggere la
pagina e rilevarlo. Se blocchi la pagina, Google non la scansiona, non vede mai
noindex e la pagina può rimanere nell’indice se riceve dei link. Cosa fare
invece: lascia la pagina accessibile alla scansione e inserisci noindex nella
pagina stessa, tramite meta tag o intestazione X-Robots-Tag.
Usare robots.txt come strumento di deindicizzazione.
Perché è sbagliato: robots.txt controlla la scansione, non l’indicizzazione. La
documentazione di Google afferma esplicitamente che “is not a mechanism for keeping a web page out of Google.” (traduzione) «non è un meccanismo per impedire che una pagina web compaia su Google». Un URL non consentito può comunque apparire nei risultati, ma senza descrizione. Cosa fare invece: usa noindex su una pagina non bloccata per rimuoverla realmente dall’indice.
Bloccare CSS o JavaScript essenziali per il rendering.
Perché è sbagliato: Google esegue il rendering delle pagine con un vero browser
per vederle come le vede un utente. Se blocchi le risorse che costruiscono il
layout o inseriscono i contenuti, Google potrebbe vedere una pagina incompleta o
vuota. Cosa fare invece: lascia accessibili alla scansione /assets/,
/static/ o qualsiasi altro percorso contenga CSS/JS; lo stesso robots.txt di
esempio di Google consente esplicitamente queste risorse.
Elencare percorsi sensibili in robots.txt per “nasconderli”.
Perché è sbagliato: il file è pubblico e chiunque può leggerlo, quindi Disallow: /admin-panel/ si limita a rivelare al mondo che quella cartella
esiste. RFC 9309 afferma senza mezzi termini che il protocollo “is not a substitute for valid content security measures.” (traduzione) «non sostituisce valide misure di sicurezza dei contenuti». Cosa fare invece: usa l’autenticazione o una protezione tramite password per tutto ciò che deve realmente rimanere privato.
Confondere i percorsi Disallow con e senza barra finale.
Perché è sbagliato: Disallow: /folder (senza barra finale) blocca /folder,
/folder/, /folder-name/ e /folder.html, ossia qualsiasi percorso che inizi
con quella stringa, perché la corrispondenza avviene per prefisso e non per
cartella. Cosa fare invece: aggiungi la barra finale (Disallow: /folder/) se
intendi bloccare soltanto la cartella e verifica l’esatto comportamento del
prefisso sui tuoi URL reali prima di pubblicare.
Presumere che le regole non distinguano tra maiuscole e minuscole.
Perché è sbagliato: i nomi dei campi non distinguono tra maiuscole e minuscole,
ma i valori dei percorsi sì; Disallow: /Folder/ non ha alcun effetto su
/folder/. Cosa fare invece: usa esattamente le maiuscole e minuscole presenti
nei tuoi URL e non dare per scontato che una regola “debba” funzionare soltanto
perché a una persona sembra scritta correttamente.
Problemi comuni
”Ho bloccato questa pagina, ma compare ancora su Google”
- Sintomo: l’URL compare ancora nei risultati di ricerca, in genere senza descrizione, benché non sia consentito in robots.txt.
- Causa probabile: l’URL riceve link da altre parti del web o dal tuo sito, quindi Google ha indicizzato il solo URL senza mai scansionarne il contenuto. Bloccare la scansione non avrebbe mai potuto rimuoverlo: robots.txt non serve a questo.
- Soluzione: se vuoi rimuoverlo, aggiungi
noindexalla pagina e assicurati che non sia bloccata in robots.txt; se lo è, consenti temporaneamente la scansione. Dopo che Google l’avrà scansionata di nuovo, verifica la correzione con Controllo URL in Search Console.
”Search Console mostra lo stato ‘Indexed, though blocked by robots.txt’”
- Sintomo: nel rapporto Pagine di GSC questo stato esatto viene segnalato per uno o più URL.
- Causa probabile: di solito è innocuo; accade spesso con URL di servizio, come carrelli, varianti filtrate o a faccette e parametri di sessione, che hanno ricevuto un link e sono stati indicizzati come semplici URL nonostante il blocco.
- Soluzione: controlla se gli URL segnalati sono pagine che volevi davvero indicizzare. Se sono URL inutili con parametri, questo stato è previsto e non merita ulteriori interventi. Se invece compare una pagina importante, sei incappato nella trappola “blocco + noindex”: rendila scansionabile e usa noindex.
”Ho modificato robots.txt, ma la modifica non sembra essere online”
- Sintomo: hai pubblicato una correzione, ma uno strumento o Google sembra ancora leggere le vecchie regole.
- Causa probabile: Google conserva robots.txt nella cache fino a circa 24 ore, quindi non rileva immediatamente una modifica. Inoltre, un CDN o un reverse proxy davanti al sito potrebbe servire una copia obsoleta del file dalla propria cache.
- Soluzione: verifica innanzitutto che il file pubblico sia davvero cambiato:
recupera direttamente
yourdomain.com/robots.txtsenza passare dalla cache, oppure controllalo con il Robots.txt Tester. Se il file pubblico è corretto, il ritardo dipende dalla cache di Google e richiede soltanto tempo; consulta il rapporto robots.txt di Search Console per vedere quando è stato recuperato l’ultima volta.
”Il tester dice che un percorso è consentito, ma Google continua a non scansionarlo”
- Sintomo: robots.txt consente chiaramente l’URL, ma i log del server o Search Console non mostrano attività di scansione recente.
- Causa probabile: consentire un URL in robots.txt non garantisce che venga scansionato; è una condizione necessaria, ma non sufficiente. La pagina potrebbe essere orfana, ossia priva di link in ingresso, assente dalla sitemap o semplicemente avere una priorità bassa nella pianificazione delle scansioni di Google.
- Soluzione: verifica che la pagina sia individuabile, tramite link interni e inclusione nella sitemap, anziché ricontrollare ancora robots.txt: in questo caso il file non è il collo di bottiglia.
”La mia regola Disallow non sembra corrispondere agli URL previsti”
- Sintomo: una regola apparentemente corretta non blocca gli URL previsti oppure ne blocca troppi.
- Causa probabile: la distinzione tra maiuscole e minuscole (
/Folder/≠/folder/) oppure la corrispondenza per prefisso, che include più URL del previsto (Disallow: /foldercorrisponde anche a/folder-name/). - Soluzione: ricontrolla le esatte maiuscole e minuscole degli URL pubblici e aggiungi una barra finale se intendevi riferirti soltanto alla cartella. Prima di fidarti della regola, verifica i percorsi specifici nel Robots.txt Tester.
”Bing ha smesso di seguire le mie regole predefinite dopo che ho aggiunto una sezione bingbot”
- Sintomo: le regole sotto
User-agent: *che prima si applicavano a Bing sembrano essere ignorate dopo l’aggiunta di un gruppoUser-agent: bingbot. - Causa probabile: Bing, come Google, applica soltanto il gruppo
corrispondente più specifico per un crawler. Un gruppo specifico per
bingbotinduce Bing a ignorare completamente le regole predefinite di*, fatta eccezione per crawl-delay. - Soluzione: ripeti nel gruppo
bingbotogni direttiva che vuoi continuare ad applicare; il gruppo deve essere autosufficiente.
Test di convalida
Esegui questi test dopo aver modificato robots.txt e prima di considerare concluso il lavoro.
Test 1: il file è online e corretto
- Test da eseguire:
curl -I https://yourdomain.com/robots.txtoppure apri l’URL in un browser; esegui inoltre un controllo separato con il Robots.txt Tester. - Risultato previsto:
HTTP/1.1 200e il tester mostra esattamente le regole che intendevi pubblicare. - Interpretazione di un errore: uno stato diverso da 200 indica che il file non è raggiungibile come previsto; controlla la distribuzione e il routing. Regole apparentemente corrette che non corrispondono a quelle modificate indicano in genere che una cache, del CDN o quella di Google di circa 24 ore, sta servendo una copia obsoleta.
- Finestra di monitoraggio: immediata per il codice di stato e il contenuto; attendi fino a circa 24 ore prima di concludere che Google non abbia rilevato la modifica.
- Condizione di rollback: il file restituisce inaspettatamente un errore client o server, oppure mostra regole che non intendevi pubblicare.
Test 2: il percorso specifico modificato si comporta come previsto
- Test da eseguire: incolla nel Robots.txt Tester l’URL esatto che volevi consentire o bloccare e controlla il verdetto per Googlebot, nonché per Bingbot se pertinente.
- Risultato previsto: lo strumento restituisce “allowed” per un percorso che volevi aprire oppure “blocked” per uno che volevi chiudere.
- Interpretazione di un errore: il verdetto opposto indica in genere che una
regola più lunga o specifica presente altrove nel file prevale su quella
appena aggiunta; cerca una regola
Allow/Disallowconcorrente su un percorso più breve o sovrapposto. - Finestra di monitoraggio: immediata; è un controllo della corrispondenza delle regole, non della scansione effettiva.
- Condizione di rollback: il percorso testato restituisce il verdetto errato anche dopo aver verificato che il file pubblico corrisponda a quello modificato.
Test 3: una pagina sbloccata viene effettivamente scansionata
- Test da eseguire: usa Controllo URL di Search Console sull’URL specifico, verificando “Crawl allowed?” e la data dell’ultima scansione.
- Risultato previsto: “Crawl allowed: Yes,” e una data di scansione successiva alla modifica di robots.txt.
- Interpretazione di un errore: “Crawl allowed: No” dopo che ritieni di aver sbloccato la pagina significa che Google sta ancora leggendo le regole dalla cache oppure che un’altra regola del file corrisponde ancora al percorso. L’assenza di una nuova data di scansione non indica necessariamente un errore: Google potrebbe semplicemente non averla ancora raggiunta.
- Finestra di monitoraggio: da 2 a 4 settimane affinché Google esegua realmente una nuova scansione e rifletta la modifica; può servire più tempo per siti grandi o a bassa priorità.
- Condizione di rollback: in un controllo successivo “Crawl allowed” torna a “No” senza che tu abbia modificato robots.txt; indaga su un possibile problema del CDN o della cache.
Test 4: non hai bloccato accidentalmente qualcos’altro
- Test da eseguire: dopo la modifica, esegui la scansione del sito con Ahrefs Site Audit o Screaming Frog SEO Spider e confronta l’elenco degli URL “blocked by robots.txt” prima e dopo.
- Risultato previsto: soltanto gli URL che intendevi bloccare o sbloccare passano da un elenco all’altro; nient’altro cambia.
- Interpretazione di un errore: una pagina imprevista che risulta appena bloccata indica in genere che una regola con carattere jolly o basata sul prefisso ha prodotto una corrispondenza più ampia del previsto.
- Finestra di monitoraggio: immediata; esegui questa scansione subito dopo la distribuzione.
- Condizione di rollback: una qualsiasi pagina da cui dipende il tuo traffico organico risulta appena bloccata.
Prompt pronti da copiare
Incolla il contenuto effettivo del tuo robots.txt e, per il secondo prompt, l’elenco degli URL che ti interessano dopo ciascun prompt.
Analizza un file robots.txt per individuare conflitti e regole rischiose
I'm going to paste a robots.txt file. Read it as a technical SEO would and
flag:
1. Any Disallow rule that conflicts with an Allow rule on the same or an
overlapping path (tell me which one wins under longest-match rules).
2. Any bare "Disallow: /" under a User-agent group — that blocks everything
for that crawler.
3. Any rule that would block commonly render-critical paths (CSS, JS, fonts,
images used for layout).
4. Any use of noindex, nofollow, or crawl-delay under a Google-facing
User-agent — these are not supported by Google.
5. Anything that looks like it's trying to hide a sensitive path (remember
this file is public).
Here is the file:
<paste robots.txt content>Verifica se URL specifici possono essere scansionati e indicizzati in sicurezza
I want the following URLs to be crawlable AND indexable by Google. Given this
robots.txt file, tell me for each URL whether it would be blocked from
crawling, and separately remind me that robots.txt says nothing about
indexing — a URL can be blocked from crawling but still indexed if it's
linked elsewhere, and a URL can be crawlable but still noindexed via a meta
tag or header this file can't show you.
Robots.txt:
<paste robots.txt content>
URLs:
<paste list of URLs> Risorse che meritano il tuo tempo
I miei articoli correlati
- La storia del blocco tramite robots.txt di due pagine ben posizionate — il mio esperimento: ho bloccato intenzionalmente due pagine di Ahrefs ben posizionate e ho monitorato gli effetti reali su posizionamenti e traffico. La prova che bloccare ≠ deindicizzare.
- Guida introduttiva alla SEO tecnica — dove si colloca robots.txt nei fondamenti della scansione e dell’indicizzazione.
- Strategie SEO per le grandi aziende — come gestire robots.txt su larga scala nei siti di grandi dimensioni.
I miei interventi
- Come funziona la Ricerca (SlideShare) — la mia spiegazione del processo scansione → rendering → indicizzazione, in cui robots.txt interviene nella fase di scansione. (Vale la consueta precisazione: “This is my understanding of systems… not going to be 100% complete or accurate.” (traduzione) «Questa è la mia comprensione dei sistemi… non sarà completa o accurata al 100%».)
Da altri autori
- Robots.txt e SEO: tutto ciò che devi sapere — la guida di riferimento di Ahrefs, scritta da Joshua Hardwick, non da me: un’analisi approfondita della sintassi e delle configurazioni pratiche.
- Per rimuovere pagine dalla Ricerca Google usa noindex, non robots.txt — l’articolo di Search Engine Roundtable sulle indicazioni di John Mueller: quando vuoi rimuovere pagine dall’indice, non bloccarle con robots.txt; usa invece noindex.
- Google spiega perché gli URL bloccati da robots.txt possono comunque essere indicizzati — l’articolo di Search Engine Journal sull’esempio “add-to-cart” di Mueller: gli URL bloccati possono comunque essere indicizzati e lo stato “Indexed, though blocked by robots.txt” è spesso innocuo per le pagine di servizio.
- Suggerimento di Bing per robots.txt: includi tutte le direttive pertinenti se hai una sezione Bingbot — l’articolo di Search Engine Land sull’insidia della sezione bingbot: un gruppo specifico per Bingbot fa sì che Bing ignori le regole predefinite del carattere jolly, quindi devi ripetere ogni direttiva che vuoi continuare ad applicare.
- Panoramica dei crawler OpenAI (GPTBot, OAI-SearchBot, ChatGPT-User) — l’elenco ufficiale di OpenAI dei token user-agent dei suoi crawler, con esempi di robots.txt per bloccare separatamente l’addestramento, la ricerca e i recuperi avviati dagli utenti.
- r/TechSEO — la comunità dedicata alla risoluzione dei problemi di scansione, indicizzazione e stato “Indexed, though blocked by robots.txt”.
Mettiti alla prova: Robots.txt
Cinque domande rapide su ciò che robots.txt controlla e ciò che non controlla. Scegli una risposta per ciascuna, quindi verifica.
Cronologia modifiche
Aggiornato il 21 ago 2026.
Riepilogo editoriale e dettagli registrati delle modifiche.Dettagli delle modifiche
-
Le note dettagliate sulle modifiche sono attualmente disponibili in inglese.
Confronto completo non disponibile — non è stata archiviata alcuna istantanea precedente per questa revisione.
Aggiornato il 30 lug 2026.
Riepilogo editoriale e dettagli registrati delle modifiche.Dettagli delle modifiche
-
Le note dettagliate sulle modifiche sono attualmente disponibili in inglese.
Confronto completo non disponibile — non è stata archiviata alcuna istantanea precedente per questa revisione.
Aggiornato il 19 lug 2026.
Riepilogo editoriale e dettagli registrati delle modifiche.Dettagli delle modifiche
-
Le note dettagliate sulle modifiche sono attualmente disponibili in inglese.
Confronto completo non disponibile — non è stata archiviata alcuna istantanea precedente per questa revisione.
Aggiornato il 18 lug 2026.
Riepilogo editoriale e dettagli registrati delle modifiche.Dettagli delle modifiche
-
Le note dettagliate sulle modifiche sono attualmente disponibili in inglese.
-
Le note dettagliate sulle modifiche sono attualmente disponibili in inglese.
-
Le note dettagliate sulle modifiche sono attualmente disponibili in inglese.
-
Le note dettagliate sulle modifiche sono attualmente disponibili in inglese.
-
Le note dettagliate sulle modifiche sono attualmente disponibili in inglese.
Confronto completo non disponibile — non è stata archiviata alcuna istantanea precedente per questa revisione.
Who's been ignoring my robots.txt?
This is live data from this site, not an illustration. My robots.txt
disallows /api/trap/, and the only link to it is invisible to
humans — so a compliant crawler will never request it. Every user-agent
below fetched it anyway. (Humans poking at it with curl show
up too; the user-agent usually gives them away.)