Robots.txt: guida completa alla configurazione
Sintassi di robots.txt, template pronti per siti pubblici, e-commerce e staging, confronto con meta robots e X-Robots-Tag, test e checklist finale.
Robots.txt è un file di testo semplice nella root del sito che dice ai crawler quali sezioni possono visitare e quali saltare. È la prima cosa che un crawler legge quando arriva sul tuo sito. Il file esiste dal 1994 e resta lo standard de facto per il controllo della scansione.
Il limite chiave: una pagina bloccata con Disallow non sparisce automaticamente dall'indice. Se altri siti ci puntano un link, Google può indicizzare l'URL senza visitarla — e può mostrare nei risultati uno snippet vuoto. Per rimuovere del tutto una pagina dall'indice servono altri strumenti.
Cos'è robots.txt e suoi limiti
Il file robots.txt va messo nella root del dominio: https://example.com/robots.txt. I sottodomini hanno file propri: il robots.txt di blog.example.com sta in https://blog.example.com/robots.txt. Lo Robots Exclusion Standard (REP) definisce le direttive di base; Google e Yandex lo hanno esteso con funzionalità aggiuntive.
Controllo della scansione
Impedisce ai bot di visitare certe sezioni — riduce il carico inutile sul server e preserva il crawl budget per le pagine di valore.
Punta alla Sitemap
La direttiva Sitemap aiuta i motori di ricerca a trovare subito la tua sitemap XML senza configurazioni aggiuntive.
Non protegge i contenuti
Robots.txt è visibile pubblicamente. Non cifra né nasconde i contenuti delle pagine — chiede solo ai bot di non visitarle.
Formato e sintassi
Il file è composto da blocchi chiamati record. Ogni record inizia con una o più direttive User-agent e può contenere un numero qualsiasi di righe Disallow, Allow, Crawl-delay e Sitemap. I record sono separati da una riga vuota. I commenti iniziano con #.
| Direttiva | Supporto | Descrizione |
|---|---|---|
| User-agent | Tutti | Identificatore del bot. * significa «tutti i crawler». Un singolo blocco può avere più righe User-agent. |
| Disallow | Tutti | Percorso vietato alla scansione. Un valore vuoto significa «nulla è bloccato» (consenti tutto). |
| Allow | Google, Yandex | Consente esplicitamente un percorso dentro una sezione vietata. Ha priorità su Disallow. |
| Crawl-delay | Yandex, Bing | Ritardo minimo in secondi fra le richieste del bot. Ignorato da Google. |
| Sitemap | Google, Yandex, Bing | URL assoluto della sitemap XML. Sono ammesse più righe Sitemap. |
Wildcard: * e $
Google e Yandex supportano due caratteri jolly nei percorsi Disallow e Allow. Un asterisco * corrisponde a qualsiasi sequenza di caratteri (stringa vuota inclusa). Il simbolo del dollaro $ ancora la fine dell'URL — corrispondenza esatta fino all'ultimo carattere.
# Block all URLs with the ?sort= parameter
Disallow: /*?sort=
# Block only /page (exact match, not /page/child)
Disallow: /page$
# Block all PDFs across the entire site
Disallow: /*.pdf$La direttiva Sitemap può stare in qualunque punto del file — non deve trovarsi dentro un blocco User-agent specifico. Usa sempre un URL assoluto completo:
Sitemap: https://example.com/sitemap.xmlEsempi pronti per diversi scenari
Scenario 1: sito pubblico semplice
Per un piccolo sito senza sezioni private basta un file minimale: consenti tutto, blocca il pannello di amministrazione e i percorsi tecnici, dichiara la sitemap.
# robots.txt for example.com — simple public site
User-agent: *
Disallow: /admin/
Disallow: /login
Disallow: /dashboard/
Sitemap: https://example.com/sitemap.xmlScenario 2: grande e-commerce con catalogo e pagine a parametri
Un negozio online genera centinaia di migliaia di URL tramite filtri, ordinamenti e paginazione. La maggior parte sono duplicati o pagine senza valore autonomo. Blocca gli URL parametrici con Disallow e wildcard, lasciando raggiungibili le pagine pulite di categoria e prodotto.
# robots.txt for e-commerce example.com
User-agent: *
# Technical and admin sections
Disallow: /admin/
Disallow: /checkout/
Disallow: /cart
Disallow: /account/
Disallow: /api/
# Parametric catalogue duplicates
Disallow: /*?sort=
Disallow: /*?filter=
Disallow: /*?page=
Disallow: /*?ref=
Disallow: /search
# Explicitly allow a useful parameter in one section
Allow: /catalog/shoes?size=
Crawl-delay: 1
Sitemap: https://example.com/sitemap.xmlScenario 3: sito con staging e pagine temporanee
Landing di webinar, bozze, pagine template e sezioni di staging vanno escluse dalla scansione. Usa Disallow per prefisso di percorso e, se serve, un blocco separato per bot specifici.
# robots.txt for example.com — main site with staging sections
User-agent: *
Disallow: /webinar-drafts/
Disallow: /templates/
Disallow: /staging/
Disallow: /_preview/
Disallow: /thank-you-test
# Block the entire site for a specific bot (e.g. an aggressive crawler)
User-agent: AhrefsBot
Disallow: /
User-agent: SemrushBot
Disallow: /
Sitemap: https://example.com/sitemap.xmlDisallow vs meta robots noindex vs X-Robots-Tag
Sono tre strumenti diversi con compiti diversi. Confonderli porta all'errore classico: una pagina è bloccata in robots.txt e ha anche il meta tag noindex — Google non può leggere il meta tag perché la pagina è esclusa dalla scansione, quindi la direttiva noindex non viene mai eseguita.
| Strumento | Dove vive | Cosa fa | Quando usarlo |
|---|---|---|---|
| Disallow in robots.txt | robots.txt | Impedisce al bot di visitare l'URL. Non rimuove dall'indice un URL già presente. | Bloccare sezioni di servizio, ridurre lo spreco di crawl budget. |
| meta robots noindex | <head> HTML | Consente al bot di visitare ma vieta l'aggiunta all'indice. Il bot legge il tag e rispetta la direttiva. | Rimuovere una pagina specifica dall'indice (pagine di ringraziamento, paginazione, pagine filtro). |
| X-Robots-Tag | Header della risposta HTTP | Equivalente a meta robots, ma funziona per qualsiasi tipo di file: PDF, immagini, documenti. | Controllare l'indicizzazione di risorse non HTML (PDF, DOCX, immagini). |
Esempio di X-Robots-Tag in un header di risposta HTTP (configurato in Nginx o nel codice dell'applicazione):
# Nginx: prevent indexation of all PDFs
location ~* \.pdf$ {
add_header X-Robots-Tag "noindex, nofollow";
}Come testare robots.txt
Valida sempre le modifiche prima di rilasciarle. Un solo refuso può bloccare l'intero sito ai crawler.
- Google Search Console → Tester robots.txt: integrato direttamente in GSC. Inserisci un URL per verificare se Googlebot e gli altri bot di Google sono autorizzati o bloccati.
- Yandex Webmaster → Analisi robots.txt: lo strumento equivalente per Yandex. Mostra come Yandex Bot interpreta il tuo file.
- Screaming Frog SEO Spider → Configuration → Robots.txt: scansiona il sito rispettando robots.txt ed elenca nel report gli URL bloccati.
- curl: verifica rapida da riga di comando per leggere il file e controllare lo stato HTTP.
# Fetch robots.txt and inspect its contents
curl -s https://example.com/robots.txt
# Check HTTP status (must be 200)
curl -I https://example.com/robots.txtErrori comuni e come correggerli
| Errore | Sintomo | Correzione |
|---|---|---|
| Disallow: / per tutto il sito | Googlebot smette di scansionare tutto. GSC mostra le pagine come «bloccate da robots.txt». | Rimuovi la riga o sostituiscila con un percorso specifico. Spesso si intrufola durante i deploy. |
| Spazio accidentale nel percorso | Disallow: /admin / (con uno spazio) — il bot legge il percorso alla lettera e nulla viene bloccato. | Rimuovi gli spazi. I percorsi distinguono maiuscole e spazi. |
| noindex + Disallow sulla stessa pagina | La pagina resta nell'indice; la direttiva noindex non viene mai eseguita. | Rimuovi Disallow, tieni solo noindex. Il bot deve poter visitare la pagina per leggere il tag. |
| User-agent mancante prima delle regole | Errore di sintassi: le regole non si applicano ad alcun bot. | Aggiungi User-agent: * prima del blocco Disallow/Allow. |
| robots.txt restituisce 404 o 500 | Il 404 viene trattato come «nessuna restrizione»; il 500 ferma temporaneamente la scansione. | Garantisci HTTP 200. Un file vuoto equivale a «consenti tutto». |
Consigli di sicurezza
Robots.txt è pubblico e indicizzato dai motori di ricerca — chiunque può leggerlo. Pubblicare in robots.txt i percorsi di pannelli di amministrazione, backup, API interne o file di configurazione consegna agli attaccanti una mappa del tuo sito.
- Non esporre percorsi sensibili — backup (.zip, .sql), file di configurazione (.env, config.php), API interne.
- Proteggi le sezioni riservate a livello di server — HTTP Basic Auth, allowlist di IP, OAuth — non via robots.txt.
- Tieni minimale la lista di Disallow — solo i percorsi che davvero vanno esclusi dalla scansione per motivi SEO.
- Rivedi regolarmente robots.txt in GSC — verifica che i deploy non abbiano introdotto per sbaglio un Disallow: /.
Checklist ed esempio finale
- Il file è raggiungibile su https://example.com/robots.txt e restituisce HTTP 200
- Codifica UTF-8, senza BOM (Byte Order Mark)
- Ogni blocco inizia con User-agent
- Una riga vuota separa i blocchi per User-agent diversi
- Nessuna combinazione di Disallow + noindex sulla stessa pagina
- Nessun percorso sensibile esposto pubblicamente
- Crawl-delay impostato per Yandex se il carico del server è alto
- La direttiva Sitemap punta al file indice nella root
- File validato in GSC e Yandex Webmaster
- Screaming Frog mostra il numero atteso di URL bloccati
Esempio finale di robots.txt per example.com con commenti — un template universale che copre la maggior parte degli scenari:
# robots.txt for example.com
# Updated: 2026-05-15
# Rules for all crawlers
User-agent: *
# Admin and auth sections
Disallow: /admin/
Disallow: /login
Disallow: /dashboard/
Disallow: /account/
# Technical paths
Disallow: /api/
Disallow: /_next/
Disallow: /cdn-cgi/
# Parametric duplicates (e-commerce)
Disallow: /*?sort=
Disallow: /*?filter=
Disallow: /*?ref=
Disallow: /search
# Staging and temporary pages
Disallow: /staging/
Disallow: /webinar-drafts/
Disallow: /templates/
# Explicit allow for a useful API path
Allow: /api/og-image/
# Crawl rate for Yandex
User-agent: Yandex
Crawl-delay: 1
# Aggressive SEO bots (optional)
User-agent: AhrefsBot
Disallow: /
User-agent: SemrushBot
Disallow: /
# Sitemap
Sitemap: https://example.com/sitemap.xmlFAQ
Robots.txt influisce sul posizionamento?
Cosa succede se robots.txt restituisce 404?
Posso impostare regole diverse per Googlebot e Yandex in un solo file?
Disallow: / blocca l'intero sito — come lo correggo in fretta?
Come blocco un singolo file ma non la sua directory?
Check it with SpiderHead
Free and local: run the audit on your own machine.



