1. Introduzione: Cos’è e a Cosa Serve il File robots.txt
Il file robots.txt
è una componente fondamentale, sebbene spesso sottovalutata, della strategia tecnica SEO di qualsiasi sito web. Si tratta di un semplice file di testo (.txt
) che risiede nella directory principale (root) di un sito e funge da primo punto di contatto per i web crawler (noti anche come robot o spider), come Googlebot, Bingbot e altri.1
Lo scopo primario del robots.txt
, definito dal Robot Exclusion Protocol (REP), non è quello di impedire l’indicizzazione dei contenuti nei motori di ricerca, un equivoco comune. Piuttosto, la sua funzione principale è quella di gestire il traffico dei crawler sul sito, fornendo istruzioni su quali aree del sito possono o non possono essere scansionate.1 Questo aiuta a prevenire il sovraccarico del server dovuto a richieste eccessive e a guidare i bot verso i contenuti più importanti, ottimizzando così il cosiddetto “crawl budget”.
È cruciale comprendere fin da subito che robots.txt
non è un meccanismo per garantire la privacy o per escludere pagine dall’indice di Google. Le pagine bloccate tramite robots.txt
potrebbero comunque essere indicizzate se linkate da altre fonti sul web. Per il controllo dell’indicizzazione, si devono usare metodi più robusti come il meta tag noindex
o l’header HTTP X-Robots-Tag
, oppure la protezione tramite password per contenuti sensibili.1
Questa guida aggiornata esplorerà in dettaglio la sintassi, le direttive, le best practice e gli errori comuni relativi al file robots.txt
, basandosi sulla documentazione ufficiale e sulle pratiche consigliate dai principali motori di ricerca come Google.
2. Anatomia del File robots.txt: Posizione e Accessibilità
Come accennato, il file robots.txt
deve trovarsi obbligatoriamente nella directory principale (root) del dominio o sottodominio a cui si applica. Ad esempio, per il sito www.example.com
, il file deve essere accessibile all’URL https://www.example.com/robots.txt
.1 È fondamentale che il nome del file sia esattamente robots.txt
, tutto in minuscolo, poiché il sistema è case-sensitive.1 Ogni sottodominio (es. blog.example.com
, shop.example.com
) necessita del proprio file robots.txt
separato, se si desidera applicare regole specifiche.1
Un aspetto importante da considerare è che il file robots.txt
è pubblicamente accessibile. Chiunque può visualizzarlo semplicemente digitando l’URL corrispondente nel browser. Questo significa che non dovrebbe mai essere utilizzato per nascondere percorsi di directory o nomi di file che contengono informazioni sensibili o private.1 Le direttive contenute nel file sono suggerimenti per i crawler; i crawler “beneducati” (come quelli dei principali motori di ricerca) generalmente rispettano queste istruzioni, ma i bot malevoli o meno sofisticati potrebbero ignorarle completamente.1 Pertanto, affidarsi a robots.txt
per la sicurezza è un errore.
3. L’Importanza Strategica del robots.txt per la SEO
Sebbene non controlli direttamente l’indicizzazione, un file robots.txt
ben configurato gioca un ruolo strategico cruciale per l’ottimizzazione per i motori di ricerca (SEO) per diversi motivi:
- Gestione del Crawl Budget: I motori di ricerca assegnano un “budget di scansione” (crawl budget) a ciascun sito, che rappresenta approssimativamente quante pagine il crawler può e vuole scansionare. Bloccando l’accesso a sezioni non importanti, duplicate, o a basso valore (come pagine di login, risultati di ricerca interni, carrelli abbandonati, versioni di staging), si evita che i crawler sprechino risorse su queste aree. Questo permette loro di concentrarsi sulla scansione e l’indicizzazione dei contenuti più rilevanti e di valore del sito.1
- Prevenzione del Sovraccarico del Server: Un sito molto grande o con risorse server limitate potrebbe subire rallentamenti o interruzioni se i crawler effettuano troppe richieste simultanee. Il
robots.txt
può aiutare a mitigare questo rischio, limitando l’accesso a sezioni specifiche o, in passato, utilizzando la direttivaCrawl-delay
(ora ignorata da Google).1 - Guida alla Scansione Efficiente: Indicando chiaramente quali parti del sito non devono essere esplorate, si aiuta indirettamente i crawler a scoprire più rapidamente i contenuti importanti e le nuove pagine aggiunte, migliorando la freschezza dell’indice.
- Prevenzione dell’Indicizzazione di Risorse Indesiderate (Indirettamente): Sebbene non sia il metodo primario, impedire la scansione di una pagina tramite
robots.txt
riduce la probabilità che venga indicizzata, specialmente se la pagina non ha link esterni che puntano ad essa. Tuttavia, per una de-indicizzazione sicura,noindex
è la scelta corretta.1 - Controllo della Scansione di Tipi di File Specifici: È possibile impedire la scansione di file multimediali (immagini, video, PDF) o altri tipi di file che non si desidera vengano processati dai crawler.1
In sintesi, un robots.txt
ottimizzato contribuisce alla salute tecnica del sito, all’efficienza della scansione e, di conseguenza, supporta le performance SEO complessive.
4. Come Funziona il Processo di Scansione con robots.txt
Il processo attraverso cui i web crawler interagiscono con il file robots.txt
è standardizzato:
- Richiesta del File: Prima di scansionare qualsiasi URL su un host (dominio o sottodominio), un crawler “educato” tenta di scaricare il file
robots.txt
situato alla radice di quell’host (es.https://www.example.com/robots.txt
). - Verifica Esistenza e Accessibilità:
- Se il file esiste e viene restituito con uno status code HTTP
200 OK
, il crawler lo analizza. - Se il file non esiste (status
404 Not Found
o altri4xx
), il crawler assume che non ci siano restrizioni e procede a scansionare l’intero sito.1 - Se si verifica un errore del server (status
5xx
) durante il tentativo di accesso alrobots.txt
, il crawler solitamente interrompe la scansione del sito per evitare di causare ulteriori problemi, ritentando in seguito. Google, in particolare, tende a non scansionare il sito finché non riesce ad accedere alrobots.txt
o a ricevere un4xx
.
- Se il file esiste e viene restituito con uno status code HTTP
- Analisi delle Direttive: Se il file viene letto con successo, il crawler cerca un blocco di direttive che corrisponda al proprio
User-agent
(il nome identificativo del bot, es.Googlebot
). Se trova un blocco specifico, segue le regole (Allow
/Disallow
) contenute in quel blocco. - Ricerca del Blocco Generico (
*
): Se non trova un blocco specifico per il proprioUser-agent
, cerca il blocco generico identificato daUser-agent: *
. Se presente, segue le regole di questo blocco.1 - Comportamento Predefinito: Se non viene trovato né un blocco specifico né un blocco generico, o se il file è vuoto, il crawler assume che tutto il contenuto sia scansionabile.1
- Applicazione delle Regole: Il crawler confronta l’URL che intende visitare con le regole
Disallow
eAllow
applicabili. La regola più specifica (basata sulla lunghezza del percorso) ha la precedenza. - Caching: I motori di ricerca come Google mettono in cache il contenuto del file
robots.txt
, solitamente aggiornandolo almeno una volta al giorno. Modifiche apportate al file potrebbero quindi non avere effetto immediato. È possibile richiedere un aggiornamento più rapido tramite Google Search Console.1
5. Sintassi e Direttive Fondamentali del File robots.txt
La corretta sintassi è essenziale per garantire che i crawler interpretino correttamente le istruzioni. Il file robots.txt
segue regole precise:
- Formato File: Deve essere un file di testo semplice, codificato in UTF-8. È importante assicurarsi che il file venga salvato senza un Byte Order Mark (BOM), poiché alcuni crawler, incluso Googlebot, potrebbero avere problemi a interpretare un file che inizia con un BOM.
- Struttura: Il file è composto da uno o più “gruppi” di record. Ogni gruppo inizia con una o più righe
User-agent
e contiene una o più direttiveDisallow
oAllow
. I gruppi sono separati da righe vuote. - Direttive per Riga: Ogni direttiva (es.
User-agent:
,Disallow:
,Allow:
,Sitemap:
) deve stare su una riga separata. - Commenti: È possibile aggiungere commenti utilizzando il carattere cancelletto (
#
). Tutto ciò che segue#
sulla stessa riga viene ignorato dai crawler. Utile per spiegare le regole.# Questa è una riga di commento ignorata dai crawler User-agent: * # Applica le regole seguenti a tutti i bot Disallow: /private/ # Blocca questa directory
- Posizione: Come già detto, deve trovarsi nella root del dominio/sottodominio e chiamarsi
robots.txt
(minuscolo).1 - Case Sensitivity: Il nome del file (
robots.txt
) e i nomi delle direttive (User-agent
,Disallow
, etc.) non sono case-sensitive, ma i valori dei percorsi nelle direttiveAllow
eDisallow
sono case-sensitive. Ad esempio,/Pagina.html
è diverso da/pagina.html
.
Direttive Principali:
User-agent:
- Specifica a quale crawler si applicano le regole del gruppo che segue. 1
User-agent: *
si applica a tutti i crawler che non hanno un blocco specifico. È buona norma includere sempre un blocco generico.User-agent: Googlebot
si applica specificamente al crawler principale di Google.User-agent: Googlebot-Image
si applica al crawler di Google Immagini.- È possibile specificare più
User-agent
all’inizio di un gruppo se le regole sono identiche per tutti.
Disallow:
- Specifica un percorso (relativo alla root del dominio) che il
User-agent
indicato non dovrebbe scansionare. 1 Disallow: /
blocca l’intero sito.Disallow: /private/
blocca la directory/private/
e tutto il suo contenuto.Disallow:
(con valore vuoto) non blocca nulla, permettendo la scansione completa (utile in un blocco specifico se il blocco generico*
è restrittivo).
- Specifica un percorso (relativo alla root del dominio) che il
Allow:
- Specifica un percorso che il
User-agent
indicato può scansionare, anche se si trova all’interno di una directory bloccata da una regolaDisallow
. 1 - Questa direttiva è parte delle estensioni introdotte da Google e supportata anche da altri motori principali.
- È particolarmente utile per consentire l’accesso a file specifici all’interno di una directory altrimenti bloccata. Esempio:
User-agent: * Disallow: /private/ Allow: /private/public-file.html
- Specifica un percorso che il
Sitemap:
- Indica la posizione di una sitemap XML. 1
- Questa direttiva non è legata a un
User-agent
specifico e può essere posizionata ovunque nel file (convenzionalmente alla fine). - È possibile specificare più sitemap ripetendo la direttiva:
Sitemap: https://www.example.com/sitemap1.xml Sitemap: https://www.example.com/sitemap2.xml
- Supportata da Google, Bing, Yahoo, Ask.
Crawl-delay:
- Direttiva storica usata per specificare un ritardo minimo (in secondi) tra le richieste di un crawler. 1
- Importante: Googlebot non supporta più questa direttiva. Google regola automaticamente la velocità di scansione in base alla risposta del server. Altri crawler potrebbero ancora rispettarla. L’uso è generalmente sconsigliato.
6. Pattern Matching e Ordine di Precedenza
Per rendere le regole più flessibili, robots.txt
supporta alcuni caratteri speciali per il pattern matching, principalmente interpretati da Google e Bing:
*
(Asterisco): Funziona come wildcard e rappresenta qualsiasi sequenza di caratteri (anche zero caratteri). 1Disallow: /private/*.pdf
blocca tutti i file PDF nella directory/private/
.Disallow: /*?sessionid=
blocca tutti gli URL che contengono il parametrosessionid
.
$
(Dollaro): Indica la fine dell’URL. Utile per specificare regole che si applicano solo a un determinato tipo di file o a URL che terminano esattamente in un certo modo, senza bloccare URL che iniziano con lo stesso percorso ma continuano (es. directory con nomi simili). 1Disallow: /*.pdf$
blocca tutti gli URL che terminano esattamente con.pdf
. Non bloccherebbe/document.pdf/pagina-extra
.Disallow: /private/$
bloccherebbe l’accesso alla pagina della directory/private/
ma non ai file o sottodirectory al suo interno (es./private/file.html
).
Ordine di Precedenza delle Regole (Google)
Quando più regole potrebbero applicarsi a un URL specifico, Google utilizza un sistema basato sulla specificità del percorso per determinare quale regola ha la precedenza:
- Corrispondenza User-Agent: Il crawler cerca prima il blocco
User-agent
più specifico che corrisponde al suo nome. Se non lo trova, usa il bloccoUser-agent: *
. - Precedenza Basata sulla Lunghezza del Percorso: All’interno del blocco
User-agent
selezionato, Google confronta l’URL con tutte le regoleAllow
eDisallow
. La regola con il percorso più lungo (più specifico) vince. - Prevalenza di
Allow
in caso di Parità: Se una regolaAllow
e una regolaDisallow
hanno la stessa lunghezza di percorso e corrispondono entrambe all’URL, la direttivaAllow
ha la precedenza.
Esempio:
User-agent: Googlebot
Disallow: /folder/
Allow: /folder/page.html
- URL:
/folder/page.html
- Corrisponde a
Disallow: /folder/
(lunghezza percorso: 8) - Corrisponde a
Allow: /folder/page.html
(lunghezza percorso: 18) - Vince
Allow
perché il percorso è più lungo (più specifico). L’URL è scansionabile.
- Corrisponde a
Esempio 2:
User-agent: Googlebot
Disallow: /file.php$
Allow: /file.php
- URL:
/file.php
- Corrisponde a
Disallow: /file.php$
(lunghezza percorso: 10) - Corrisponde a
Allow: /file.php
(lunghezza percorso: 9) - Sebbene
Allow
sia presente, la regolaDisallow
con$
è più specifica perché corrisponde esattamente alla fine dell’URL. In questo caso, la specificità data dal$
può essere considerata equivalente a una lunghezza maggiore in termini pratici di matching. L’URL è bloccato. (Nota: l’interpretazione esatta della specificità con$
può variare leggermente, testare è sempre consigliato).
- Corrisponde a
Esempio 3 (Parità di Lunghezza):
User-agent: Googlebot
Disallow: /page
Allow: /page
- URL:
/page
- Corrisponde a
Disallow: /page
(lunghezza percorso: 5) - Corrisponde a
Allow: /page
(lunghezza percorso: 5) - Le lunghezze sono uguali. Vince
Allow
. L’URL è scansionabile.
- Corrisponde a
Comprendere questa logica è fondamentale per evitare di bloccare o permettere accidentalmente l’accesso a contenuti.
7. Esempi Pratici di File robots.txt
Di seguito sono riportati alcuni esempi comuni e avanzati di configurazioni robots.txt
.
Esempi Base:
- Permettere la scansione completa a tutti i crawler: Code snippet
User-agent: * Disallow:
(Nota: Un filerobots.txt
vuoto o assente ha lo stesso effetto) - Bloccare la scansione completa a tutti i crawler: Code snippet
User-agent: * Disallow: /
1 - Bloccare una specifica directory e il suo contenuto a tutti i crawler: Code snippet
User-agent: * Disallow: /private/ Disallow: /temp/ Disallow: /cgi-bin/
1 - Bloccare un singolo file a tutti i crawler: Code snippet
User-agent: * Disallow: /documento-riservato.html
1 - Permettere la scansione solo a Googlebot, bloccando tutti gli altri: Code snippet
User-agent: Googlebot Disallow: User-agent: * Disallow: /
(L’ordine qui è importante: prima la regola specifica, poi quella generica) 1 - Bloccare un crawler specifico (es. un bot “cattivo” o non necessario): Code snippet
User-agent: BadBot Disallow: / User-agent: * Disallow:
1
Esempi Avanzati:
- Bloccare specifici tipi di file (es. PDF e DOCX) a tutti i crawler: Code snippet
User-agent: * Disallow: /*.pdf$ Disallow: /*.docx$
1 - Bloccare una directory ma permettere l’accesso a un file specifico al suo interno (per Googlebot): Code snippet
User-agent: Googlebot Disallow: /private-area/ Allow: /private-area/public-info.pdf
- Bloccare URL con parametri specifici (es. ID di sessione): Code snippet
User-agent: * Disallow: /*?sessionid= Disallow: /*&utm_source=
(Blocca qualsiasi URL contenente?sessionid=
o&utm_source=
. Attenzione: questo può bloccare anche URL utili se i parametri sono usati legittimamente per contenuti unici) - Bloccare Google Immagini dalla scansione di tutte le immagini del sito: Code snippet
User-agent: Googlebot-Image Disallow: /
1 - Bloccare Google Immagini dalla scansione di un’immagine specifica: Code snippet
User-agent: Googlebot-Image Disallow: /images/logo-vecchio.png
1 - Permettere la scansione ad AdSense per la verifica del sito, anche se il resto è bloccato: Code snippet
User-agent: Mediapartners-Google Allow: / User-agent: * Disallow: /
1ATTENZIONE: Bloccare l’intero sito con Disallow: / impedirà a Google di scansionare e indicizzare le pagine, il che è generalmente dannoso per la SEO. Questo esempio è valido solo in scenari molto specifici e temporanei, o se si utilizza AdSense su un sito che non si desidera indicizzare. Per la maggior parte dei siti, è necessario permettere la scansione delle pagine dove appaiono gli annunci. - Includere più sitemap: Code snippet
User-agent: * Disallow: /admin/ Disallow: /cart/ Sitemap: https://www.example.com/sitemap-pages.xml Sitemap: https://www.example.com/sitemap-posts.xml Sitemap: https://www.example.com/sitemap-images.xml
- Bloccare specifici tipi di file solo a Googlebot usando
$
per precisione: Code snippetUser-agent: Googlebot Disallow: /*.xls$ Disallow: /*.docx$
1
8. Errori Comuni nel File robots.txt e Come Evitarli
Errori nel file robots.txt
possono avere conseguenze negative significative sulla visibilità del sito nei motori di ricerca. Ecco alcuni degli errori più comuni e come prevenirli:
- Errori di Sintassi Comuni:
- Nome File Errato: Usare
Robot.txt
,robots.TXT
o altri nomi diversi darobots.txt
(tutto minuscolo) impedirà ai crawler di trovarlo.1 - Posizionamento Errato: Il file deve trovarsi nella directory root, non in sottodirectory (es.
/blog/robots.txt
).1 - Errori di Battitura nelle Direttive: Scrivere
Disalow:
invece diDisallow:
oUseragent:
invece diUser-agent:
invaliderà la regola. - Mancanza del
/
Iniziale nei Percorsi: I percorsi devono iniziare con/
per indicare la root del sito.Disallow: private/
è errato; corretto èDisallow: /private/
. - Una Sola Direttiva per Riga: Combinare direttive sulla stessa riga non è valido (es.
Disallow: /dir1/ Disallow: /dir2/
).
- Nome File Errato: Usare
- Usare
robots.txt
per Nascondere Contenuti o Prevenire l’Indicizzazione:- Questo è uno degli equivoci più diffusi. Bloccare un URL in
robots.txt
non garantisce che non venga indicizzato. Se Google trova link verso quella pagina da altre parti del web, potrebbe comunque indicizzare l’URL, pur senza scansionarne il contenuto (mostrando spesso un risultato con “Nessuna informazione disponibile per questa pagina.”). Per impedire l’indicizzazione in modo affidabile, usare il meta tagrobots
con valorenoindex
o l’header HTTPX-Robots-Tag: noindex
. Per contenuti sensibili, usare l’autenticazione (password protection).1
- Questo è uno degli equivoci più diffusi. Bloccare un URL in
- Bloccare Accidentalmente Risorse Critiche (CSS/JS):
- Bloccare file CSS o JavaScript necessari per il rendering corretto della pagina impedisce a Googlebot di “vedere” la pagina come la vedrebbe un utente. Questo può portare a una valutazione errata della pagina, problemi di usabilità mobile e potenziali penalizzazioni o ranking inferiori. È fondamentale assicurarsi che tutte le risorse necessarie per il rendering siano accessibili ai crawler.1 Testare sempre le modifiche con lo Strumento di test del file robots.txt di Google Search Console e la funzione “Visualizza come Google”.
- Problemi di Maiuscole/Minuscole (Case Sensitivity):
- Ricordare che i percorsi nelle direttive
Allow
/Disallow
sono case-sensitive. Se la struttura URL del sito usa lettere maiuscole (es./Prodotti/ScarpaModelloX.html
), le regole inrobots.txt
devono rispettare esattamente quelle maiuscole/minuscole.Disallow: /prodotti/
non bloccherà/Prodotti/
.1
- Ricordare che i percorsi nelle direttive
- Ordine Errato delle Direttive o Comprensione della Specificità:
- Non comprendere come viene determinata la precedenza (specificità del percorso,
Allow
vsDisallow
) può portare a bloccare contenuti che si volevano accessibili o viceversa. Testare le regole su URL specifici è cruciale.
- Non comprendere come viene determinata la precedenza (specificità del percorso,
- Byte Order Mark (BOM) in UTF-8:
- Alcuni editor di testo, specialmente su Windows, possono aggiungere un carattere invisibile (BOM) all’inizio dei file UTF-8. Googlebot potrebbe avere problemi a interpretare un
robots.txt
che inizia con un BOM, potenzialmente ignorando tutte le direttive. Salvare sempre il filerobots.txt
con codifica UTF-8 senza BOM.
- Alcuni editor di testo, specialmente su Windows, possono aggiungere un carattere invisibile (BOM) all’inizio dei file UTF-8. Googlebot potrebbe avere problemi a interpretare un
Come Evitare Errori:
- Validare: Usare lo Strumento di test del file robots.txt in Google Search Console per verificare la sintassi e testare le regole su URL specifici prima di caricare il file sul server.
- Testare: Dopo aver caricato o modificato il file, usare la funzione “Ispeziona URL” (precedentemente “Visualizza come Google”) in Search Console per assicurarsi che Googlebot possa accedere e renderizzare correttamente le pagine importanti.
- Mantenere Semplice: Evitare regole eccessivamente complesse se non strettamente necessario.
- Revisionare Periodicamente: Controllare il file
robots.txt
regolarmente, specialmente dopo modifiche alla struttura del sito o migrazioni.
9. Conclusione: Il Ruolo Strategico di robots.txt nella SEO Moderna
Il file robots.txt
rimane uno strumento essenziale nell’arsenale della SEO tecnica. Sebbene la sua funzione primaria sia la gestione della scansione e non il controllo diretto dell’indicizzazione, il suo impatto sulle performance complessive di un sito web non può essere sottovalutato.
Riepilogo dei Punti Chiave:
- Gestione del Crawl, Non dell’Indice:
robots.txt
dice ai crawler dove possono e non possono andare, ma non impedisce l’indicizzazione di URL scoperti tramite link esterni. Per il controllo dell’indice, si usanonoindex
oX-Robots-Tag
.1 - Sintassi e Posizione Cruciali: Errori nel nome (
robots.txt
minuscolo), nella posizione (root directory) o nella sintassi delle direttive possono rendere il file inefficace o causare problemi imprevisti.1 - Interpretazione Specifica (Google): Comprendere le estensioni di Google (
Allow
) e l’ordine di precedenza basato sulla specificità del percorso è fondamentale per creare regole efficaci.1 - Non Bloccare Risorse Critiche: Impedire l’accesso a CSS e JS essenziali può danneggiare la capacità di Google di comprendere e valutare correttamente le pagine.1
- Testare Sempre: Utilizzare gli strumenti forniti da Google Search Console è indispensabile per validare la sintassi e verificare l’impatto delle regole prima e dopo l’implementazione.1
L’Importanza Strategica: Un file robots.txt
correttamente configurato e gestito attivamente contribuisce direttamente a:
- Salute Tecnica del Sito: Previene il sovraccarico del server causato da scansioni eccessive.1
- Efficienza della Scansione: Ottimizza l’uso del crawl budget, assicurando che i crawler dedichino tempo alle pagine più importanti.2
- Scoperta dei Contenuti: Guida i crawler verso i contenuti di valore, facilitandone la scoperta e l’aggiornamento nell’indice.
- Fondamenta SEO Solide: Costituisce una base tecnica necessaria per una strategia SEO di successo a lungo termine.
In conclusione, dedicare tempo alla creazione, alla verifica e alla manutenzione di un file robots.txt
ottimizzato non è un compito secondario, ma un investimento strategico per garantire che i motori di ricerca possano interagire in modo efficiente ed efficace con il proprio sito web. Si raccomanda una verifica e un’eventuale ottimizzazione periodica del file robots.txt
come parte integrante delle attività di manutenzione SEO.
Fonti
- https://www.evemilano.com/blog/robots-txt/
- https://www.robotstxt.org/
- https://developers.google.com/search/docs/crawling-indexing/robots/intro
- https://developers.google.com/search/docs/crawling-indexing/robots/create-robots-txt
- https://developer.mozilla.org/en-US/docs/Web/Security/Practical_implementation_guides/Robots_txt
Autore
