Tester robots.txt
Inserisci un indirizzo e scegli un crawler. Scarichiamo il robots.txt del sito, lo applichiamo come dice lo standard e ti diciamo se l’indirizzo è aperto o bloccato e quale riga decide.
Un avviso sulla porta, letto prima di ogni visita
Prima di richiedere pagine a un host, un crawler educato chiede un solo file, /robots.txt. Il file elenca i percorsi che il proprietario del sito preferirebbe non far scaricare, ordinati in base al crawler che chiede. Per decenni ha funzionato solo per consuetudine. Nel 2022 ha ottenuto uno standard scritto, la RFC 9309, e questo tester segue quel testo.
Il file è fatto di gruppi. Un gruppo comincia con una o più righe User-agent e prosegue con regole Allow e Disallow:
User-agent: *
Disallow: /cart/
Disallow: /*?sort=
User-agent: GPTBot
Disallow: /
Sitemap: https://www.example.com/sitemap.xmlOgni host e ogni schema ha il proprio file. Le regole di https://www.example.com non dicono nulla su https://shop.example.com.
Come si arriva al verdetto
Servono due scelte, in quest’ordine.
- Quale gruppo. Il crawler cerca un gruppo che nomini il suo token, senza distinguere maiuscole e minuscole. Se lo trova, obbedisce a quel gruppo e a nient’altro. Ripiega su
User-agent: *solo quando nessun gruppo lo nomina. È una trappola in cui si cade di continuo: aggiungi un piccolo gruppo per Googlebot e hai liberato Googlebot da tutte le regole scritte sotto*. I gruppi che nominano lo stesso token vengono letti come uno solo. Alcuni crawler hanno una seconda scelta documentata, che il tester applica. Googlebot-Image e Applebot seguono il gruppo di Googlebot quando non ne hanno uno proprio, e YandexBot segueYandex. - Quale regola. Dentro il gruppo, ogni regola il cui pattern corrisponde all’inizio del percorso è candidata. Vince la candidata con il pattern più lungo, ovunque si trovi nel file. Se corrispondono un Allow e un Disallow della stessa lunghezza, vince Allow. Se non corrisponde nulla, l’indirizzo è aperto.
I pattern vengono confrontati con il percorso e la query string, carattere per carattere e distinguendo maiuscole e minuscole. Due caratteri sono speciali: * sta per qualsiasi sequenza di caratteri, e $ alla fine significa «il percorso finisce qui».
| Pattern | Corrisponde a | Non corrisponde a |
|---|---|---|
/fish | /fish, /fish.html, /fishing/rods | /Fish, /catfish |
/fish/ | /fish/, /fish/salmon | /fish, /fish.html |
/*.pdf$ | /guide.pdf, /docs/a.pdf | /guide.pdf?v=2 |
/*?sort= | /shoes?sort=price | /shoes?page=2&sort=price |
La codifica percentuale viene uniformata prima del confronto, quindi /caf%C3%A9 e /café sono lo stesso percorso.
Leggere il risultato
Il riepilogo dà il verdetto, il numero della riga decisiva e il gruppo applicato. Sotto, il file viene stampato con i numeri di riga. Le righe del gruppo applicato hanno una barra e la riga decisiva è evidenziata. Quando corrispondono più regole, una piccola tabella le elenca con la lunghezza del pattern, e quella lunghezza basta a capire perché una batte l’altra. Un’ultima tabella dà il verdetto per gli altri crawler dell’elenco, perché spesso uno stesso file li tratta in modo diverso.
Lo stato del file conta quanto il suo contenuto:
- 404 o qualsiasi altro 4xx: non ci sono regole, ogni indirizzo è aperto. Vale anche per il 403. Vietare il file non vieta la scansione.
- 5xx, 429 o nessuna risposta: il crawler non può conoscere le regole e deve stare fuori da tutto il sito finché il file non torna.
- 200 con dentro una pagina web: nessuna riga valida, quindi non c’è niente di bloccato. Succede quando un sito risponde a ogni indirizzo sconosciuto con la home page.
Il tester segnala anche le righe che un crawler salterà: regole messe prima di qualsiasi riga User-agent, nomi di direttive sconosciuti o scritti male, pattern che non iniziano con /, un file oltre i 500 KiB, righe Noindex: (Google le ha abbandonate nel 2019) e Crawl-delay, che Googlebot ignora.
Cosa non può fare un robots.txt
È una richiesta. I motori di ricerca e le grandi aziende di IA dicono di rispettarla. Gli scraper e gli scanner di sicurezza no, quindi non mettere mai lì un percorso segreto. Del resto il file è pubblico e chiunque può leggerlo.
Bloccare una pagina non la rimuove. Una pagina bloccata non viene scaricata, ma il suo indirizzo può comunque comparire nei risultati quando altre pagine la linkano. Per tenere una pagina fuori da un indice, lasciala scansionabile e rispondi con noindex in un meta tag o in un header X-Robots-Tag.
Questa pagina legge il file una volta, dal nostro server. Un crawler può tenerne una copia vecchia fino a un giorno, e un sito può servire file diversi a visitatori diversi. Ogni crawler ha poi il proprio parser. Dove lo standard tace, per esempio sulle direttive scritte male, leggiamo la riga come fa il parser pubblicato da Google e te lo diciamo.
Domande frequenti
Come blocco un crawler e permetto tutti gli altri?
Dai a quel crawler un gruppo proprio con Disallow: / e lascia stare gli altri:
User-agent: GPTBot
Disallow: /I crawler che non trovano un gruppo con il loro nome usano il gruppo *, o non hanno restrizioni se non c’è.
Perché la mia pagina è bloccata se c’è una regola Allow per lei?
Le possibilità sono due. Corrisponde anche un pattern Disallow più lungo, e vince il pattern più lungo. Oppure la regola Allow sta in un gruppo che il crawler non legge, visto che un crawler con un gruppo proprio ignora del tutto il gruppo *. Il tester mostra quale gruppo è stato applicato e ogni regola che ha corrisposto.
Disallow rimuove una pagina da Google?
No. Impedisce a Google di scaricare la pagina, non di elencarne l’indirizzo. Usa noindex sulla pagina stessa e non bloccare quella pagina nel robots.txt, altrimenti il crawler non arriva mai a vedere l’istruzione.
Il robots.txt distingue maiuscole e minuscole?
I percorsi sì: Disallow: /Private non copre /private. I nomi delle direttive e dei crawler no: user-agent: googlebot e User-Agent: Googlebot significano la stessa cosa.
Cosa significa una riga Disallow vuota?
Disallow: senza nulla dopo non blocca niente. Un gruppo con solo quella riga dice «questo crawler può scaricare tutto». Disallow: /, con la barra, blocca l’intero sito.
Quanto ci mette una modifica al robots.txt a essere applicata?
I crawler tengono una copia del file e lo standard chiede di non usarla per più di 24 ore. Conta che una nuova regola venga seguita entro un giorno, a volte prima. Un nuovo Disallow non rimuove le pagine che sono già in un indice.