Il robots.txt è un file di testo di poche righe, eppure è tra le cause più frequenti di disastri SEO. Una barra di troppo può escludere un intero sito dalla scansione; una regola scritta male può lasciare aperto ciò che si voleva chiudere. Conviene conoscerne bene la grammatica, che è più semplice di quanto sembri ma ha qualche trappola.
Dove si trova e a cosa serve
Il file deve stare nella radice dell'host, cioè all'indirizzo /robots.txt. Vale solo per quell'host e quel protocollo: un sottodominio ha bisogno del proprio file, e la versione HTTP e quella HTTPS sono considerate separate.
Il suo compito è uno solo: dire ai crawler quali percorsi non scansionare. Non è un sistema di sicurezza, perché chiunque può leggerlo e i crawler malevoli lo ignorano. E non è uno strumento per togliere pagine dall'indice.
La sintassi di base
Un robots.txt è composto da gruppi. Ogni gruppo inizia con una o più righe User-agent e prosegue con le regole.
User-agent: *
Disallow: /admin/
Disallow: /carrello
Allow: /admin/pubblico/
User-agent: Googlebot-Image
Disallow: /bozze/
Sitemap: /sitemap.xml
User-agentindica a quale crawler si applica il gruppo; l'asterisco vale per tutti.Disallowesclude i percorsi che iniziano con il valore indicato.Allowriapre un percorso all'interno di una zona esclusa.Sitemapsegnala la posizione della sitemap e, a rigore, va scritta con l'URL completo; è indipendente dai gruppi.
Un Disallow: vuoto significa «nessuna restrizione». Disallow: / significa «tutto escluso». La differenza è un solo carattere.
Caratteri jolly
I principali motori supportano due simboli:
*corrisponde a qualsiasi sequenza di caratteri;$indica la fine dell'URL.
Esempi utili:
Disallow: /*?ordina=blocca gli URL con il parametro di ordinamento;Disallow: /*.pdf$blocca i file che terminano in.pdf;Disallow: /cercablocca anche/cercare-casa, perché la corrispondenza è per prefisso. Per limitarsi alla cartella serve/cerca/.
Chi vince quando le regole si contraddicono
Un crawler sceglie un solo gruppo: quello con lo user-agent più specifico che lo riguarda. Se esiste un gruppo per Googlebot, Googlebot ignora completamente quello con l'asterisco. È un errore classico aggiungere un gruppo dedicato con una sola regola e scoprire che tutte le esclusioni generali non valgono più per quel crawler.
All'interno del gruppo, Google applica la regola con il percorso più lungo che corrisponde all'URL. A parità di lunghezza, prevale Allow, la regola meno restrittiva.
| URL | Regole | Esito |
|---|---|---|
| /admin/pubblico/info | Disallow: /admin/ · Allow: /admin/pubblico/ | consentito |
| /admin/utenti | Disallow: /admin/ · Allow: /admin/pubblico/ | bloccato |
| /pagina | Disallow: /pag · Allow: /pagina | consentito |
Gli errori più comuni
Bloccare per togliere dall'indice
Se una pagina è già indicizzata e viene bloccata, il motore non può più leggerla e quindi non vede l'eventuale noindex. L'URL può restare nei risultati, senza descrizione. Per rimuovere una pagina serve prima noindex con la scansione consentita, e solo dopo, se necessario, il blocco.
Bloccare CSS e JavaScript
Escludere le cartelle degli asset impedisce al motore di renderizzare la pagina come la vede un utente. Il risultato può essere una valutazione errata del layout e del contenuto.
Il robots.txt di staging finito in produzione
Un ambiente di prova protetto con Disallow: / che viene copiato in produzione durante il rilascio blocca tutto il sito. È un controllo da inserire in ogni checklist di pubblicazione.
Usare direttive non supportate
Noindex dentro il robots.txt non è supportato da Google. Crawl-delay è ignorato da Google ma rispettato da alcuni altri motori. Affidarsi a queste righe significa ottenere comportamenti diversi a seconda del crawler.
Errori del server sul file
Se il robots.txt restituisce un errore 5xx, i crawler possono interpretare la situazione con prudenza e sospendere la scansione. Un 404 invece viene letto come «nessuna restrizione».
Come verificarlo
Prima di pubblicare una modifica conviene testarla: gli strumenti per webmaster mostrano quale versione del file è stata letta e se ci sono stati problemi nel recuperarlo, e diverse librerie e crawler permettono di simulare se un dato URL è consentito per un dato user-agent. Tenere il file sotto controllo di versione, come il resto del codice, aiuta a capire quando e perché è cambiato.
In sintesi
- Il robots.txt controlla la scansione, non l'indicizzazione.
- Un crawler segue un solo gruppo, il più specifico per il suo user-agent.
- Nel gruppo vince la regola più lunga; a parità, prevale Allow.
- Non bloccare CSS e JavaScript necessari al rendering.
- Testa ogni modifica e verifica che lo staging non finisca in produzione.