{"id":17913,"date":"2024-04-30T14:59:27","date_gmt":"2024-04-30T12:59:27","guid":{"rendered":"https:\/\/xlogic.org\/blog\/?p=17913"},"modified":"2026-08-01T10:26:10","modified_gmt":"2026-08-01T08:26:10","slug":"come-impostare-correttamente-il-file-robots-txt-e-come-evitare-i-principali-problemi","status":"publish","type":"post","link":"https:\/\/xlogic.org\/blog\/come-impostare-correttamente-il-file-robots-txt-e-come-evitare-i-principali-problemi.html\/","title":{"rendered":"Come configurare il file robots.txt senza errori"},"content":{"rendered":"<p><strong>Il file robots.txt indica ai crawler quali URL possono richiedere e quali non dovrebbero scansionare.<\/strong> Deve trovarsi nella radice dell\u2019host, per esempio <code>https:\/\/esempio.it\/robots.txt<\/code>, e va configurato con attenzione perch\u00e9 una regola errata pu\u00f2 bloccare sezioni importanti del sito.<\/p>\n<p>Robots.txt controlla principalmente la scansione. Non \u00e8 uno strumento di sicurezza e non garantisce l\u2019esclusione di un URL dai risultati di ricerca.<\/p>\n<h2>Che cos\u2019\u00e8 il file robots.txt?<\/h2>\n<p>\u00c8 un file di testo letto dai crawler prima di visitare un sito. Ogni gruppo di regole specifica uno o pi\u00f9 user-agent e le directory o risorse che possono essere richieste.<\/p>\n<p>Google spiega nella propria <a href=\"https:\/\/developers.google.com\/search\/docs\/crawling-indexing\/robots\/intro\" target=\"_blank\" rel=\"noopener\">introduzione a robots.txt<\/a> che il file serve soprattutto a gestire l\u2019accesso dei crawler e non a mantenere una pagina fuori dall\u2019indice.<\/p>\n<h2>Dove deve essere inserito?<\/h2>\n<p>Il file deve essere disponibile nella radice esatta di protocollo, host e porta a cui si applica.<\/p>\n<table>\n<thead>\n<tr>\n<th>URL del file<\/th>\n<th>Ambito<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>https:\/\/esempio.it\/robots.txt<\/td>\n<td>https:\/\/esempio.it\/<\/td>\n<\/tr>\n<tr>\n<td>https:\/\/blog.esempio.it\/robots.txt<\/td>\n<td>Solo blog.esempio.it<\/td>\n<\/tr>\n<tr>\n<td>http:\/\/esempio.it\/robots.txt<\/td>\n<td>Solo versione HTTP<\/td>\n<\/tr>\n<tr>\n<td>https:\/\/esempio.it\/cartella\/robots.txt<\/td>\n<td>Non valido come file principale<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Ogni sottodominio deve avere il proprio file. Se il sito risponde sia con www sia senza www, \u00e8 opportuno verificare redirect e host canonico.<\/p>\n<h2>Qual \u00e8 la sintassi di base?<\/h2>\n<pre><code>User-agent: *\nDisallow: \/area-privata\/\nAllow: \/area-privata\/file-pubblico.pdf\n\nSitemap: https:\/\/esempio.it\/sitemap_index.xml\n<\/code><\/pre>\n<p>Le direttive principali sono:<\/p>\n<ul>\n<li><code>User-agent<\/code>: crawler a cui si applica il gruppo;<\/li>\n<li><code>Disallow<\/code>: percorso che non dovrebbe essere scansionato;<\/li>\n<li><code>Allow<\/code>: eccezione consentita all\u2019interno di un percorso bloccato;<\/li>\n<li><code>Sitemap<\/code>: URL assoluto della sitemap XML.<\/li>\n<\/ul>\n<p>Le righe vuote separano i gruppi. I commenti iniziano con <code>#<\/code>.<\/p>\n<h2>Come consentire la scansione di tutto il sito?<\/h2>\n<pre><code>User-agent: *\nDisallow:\n\nSitemap: https:\/\/esempio.it\/sitemap_index.xml\n<\/code><\/pre>\n<p>Una direttiva <code>Disallow<\/code> vuota non blocca percorsi. Anche l\u2019assenza del file permette normalmente la scansione, ma pubblicarlo pu\u00f2 essere utile per indicare la sitemap e documentare le regole.<\/p>\n<h2>Come bloccare l\u2019intero sito?<\/h2>\n<pre><code>User-agent: *\nDisallow: \/\n<\/code><\/pre>\n<p>Questa configurazione impedisce ai crawler conformi di richiedere il sito. \u00c8 pericolosa in produzione e viene spesso lasciata per errore dopo il passaggio da staging a pubblico.<\/p>\n<p>Non usarla per proteggere dati riservati: il file \u00e8 pubblico e crawler malevoli possono ignorarlo.<\/p>\n<h2>Robots.txt pu\u00f2 rimuovere una pagina da Google?<\/h2>\n<p>No. Se una pagina \u00e8 bloccata, Google potrebbe non leggerne il contenuto ma conoscere comunque l\u2019URL attraverso link esterni o sitemap. L\u2019URL pu\u00f2 quindi apparire senza snippet.<\/p>\n<p>Per escludere una pagina dall\u2019indice si utilizza una direttiva <code>noindex<\/code> nella pagina o nell\u2019header HTTP, lasciandola accessibile al crawler. La documentazione ufficiale spiega come <a href=\"https:\/\/developers.google.com\/search\/docs\/crawling-indexing\/block-indexing\" target=\"_blank\" rel=\"noopener\">bloccare l\u2019indicizzazione con noindex<\/a>.<\/p>\n<p>Per contenuti realmente privati servono autenticazione, autorizzazione o protezione con password.<\/p>\n<h2>Robots.txt per WordPress<\/h2>\n<p>WordPress pu\u00f2 generare un file virtuale quando non esiste un robots.txt fisico. \u00c8 comunque possibile crearne uno nella document root o modificarne l\u2019output tramite plugin e codice.<\/p>\n<p>Un esempio prudente:<\/p>\n<pre><code>User-agent: *\nDisallow: \/wp-admin\/\nAllow: \/wp-admin\/admin-ajax.php\n\nSitemap: https:\/\/esempio.it\/sitemap_index.xml\n<\/code><\/pre>\n<p>Non \u00e8 necessario bloccare automaticamente <code>\/wp-content\/<\/code>, <code>\/wp-includes\/<\/code>, CSS o JavaScript. I motori possono aver bisogno di queste risorse per renderizzare correttamente le pagine.<\/p>\n<h2>Quali directory WordPress non bisogna bloccare alla cieca?<\/h2>\n<ul>\n<li>file CSS e JavaScript del tema;<\/li>\n<li>immagini e media necessari alla pagina;<\/li>\n<li>endpoint utilizzati dal frontend;<\/li>\n<li>risorse di plugin che influenzano rendering e interazione;<\/li>\n<li>pagine pubbliche generate da WooCommerce o altri plugin.<\/li>\n<\/ul>\n<p>Prima di aggiungere una regola, controlla quali URL corrispondono realmente al percorso e se sono necessari agli utenti o ai crawler.<\/p>\n<h2>Come gestire parametri e filtri?<\/h2>\n<p>Siti e-commerce e cataloghi possono generare molti URL tramite filtri, ordinamenti e parametri. Robots.txt pu\u00f2 ridurre alcune richieste, ma non dovrebbe essere l\u2019unico strumento.<\/p>\n<p>Valuta anche:<\/p>\n<ul>\n<li>canonical corretti;<\/li>\n<li>link interni che non producano combinazioni infinite;<\/li>\n<li>gestione dei filtri realmente indicizzabili;<\/li>\n<li><code>noindex<\/code> per pagine accessibili ma non utili in ricerca;<\/li>\n<li>configurazione della navigazione a faccette;<\/li>\n<li>sitemap contenente solo URL canonici.<\/li>\n<\/ul>\n<p>Bloccare tutti gli URL con un carattere <code>?<\/code> pu\u00f2 impedire la scansione di pagine utili e di risorse necessarie.<\/p>\n<h2>Come indicare la sitemap?<\/h2>\n<pre><code>Sitemap: https:\/\/esempio.it\/sitemap_index.xml\n<\/code><\/pre>\n<p>L\u2019URL deve essere assoluto. \u00c8 possibile inserire pi\u00f9 righe Sitemap. La presenza nel robots.txt non sostituisce l\u2019invio e il monitoraggio attraverso Google Search Console.<\/p>\n<h2>Regole per crawler differenti<\/h2>\n<pre><code>User-agent: Googlebot\nDisallow: \/test\/\n\nUser-agent: *\nDisallow: \/area-temporanea\/\n<\/code><\/pre>\n<p>Le regole specifiche e generiche devono essere valutate separatamente. Non creare gruppi complessi senza necessit\u00e0, perch\u00e9 aumentano il rischio di comportamenti inattesi.<\/p>\n<h2>Caratteri jolly e fine URL<\/h2>\n<p>Google e altri crawler principali supportano comunemente:<\/p>\n<ul>\n<li><code>*<\/code> per una sequenza di caratteri;<\/li>\n<li><code>$<\/code> per indicare la fine dell\u2019URL.<\/li>\n<\/ul>\n<pre><code>User-agent: *\nDisallow: \/*?print=\nDisallow: \/*.pdf$\n<\/code><\/pre>\n<p>Queste regole vanno testate con URL reali. Un pattern troppo ampio pu\u00f2 bloccare molte pi\u00f9 pagine del previsto.<\/p>\n<h2>Errori comuni nel file robots.txt<\/h2>\n<ul>\n<li>lasciare <code>Disallow: \/<\/code> dopo la pubblicazione;<\/li>\n<li>inserire il file in una sottocartella;<\/li>\n<li>usare robots.txt per nascondere informazioni riservate;<\/li>\n<li>bloccare CSS, JavaScript e immagini necessari;<\/li>\n<li>pensare che Disallow equivalga a noindex;<\/li>\n<li>indicare una sitemap non raggiungibile;<\/li>\n<li>creare pattern non verificati;<\/li>\n<li>modificare il file senza controllare cache e CDN;<\/li>\n<li>avere file differenti su host che dovrebbero reindirizzare;<\/li>\n<li>bloccare endpoint utilizzati dall\u2019applicazione.<\/li>\n<\/ul>\n<h2>Come verificare il file?<\/h2>\n<ol>\n<li>apri direttamente <code>\/robots.txt<\/code> nel browser;<\/li>\n<li>verifica HTTP 200 e contenuto restituito;<\/li>\n<li>controlla che non venga mostrata una pagina HTML;<\/li>\n<li>prova URL consentiti e bloccati con gli strumenti disponibili;<\/li>\n<li>controlla Search Console per errori di scansione;<\/li>\n<li>verifica la sitemap indicata;<\/li>\n<li>svuota cache server e CDN dopo la modifica;<\/li>\n<li>monitora log e scansione nei giorni successivi.<\/li>\n<\/ol>\n<p>\u00c8 utile conservare una copia precedente prima di ogni modifica.<\/p>\n<h2>Esempio per un sito WordPress pubblico<\/h2>\n<pre><code>User-agent: *\nDisallow: \/wp-admin\/\nAllow: \/wp-admin\/admin-ajax.php\n\nSitemap: https:\/\/esempio.it\/sitemap_index.xml\n<\/code><\/pre>\n<p>Questo \u00e8 soltanto un punto di partenza. WooCommerce, aree riservate, ricerca interna e parametri possono richiedere regole diverse.<\/p>\n<h2>Esempio per un ambiente di staging<\/h2>\n<pre><code>User-agent: *\nDisallow: \/\n<\/code><\/pre>\n<p>Per uno staging \u00e8 comunque preferibile aggiungere autenticazione HTTP o limitazione IP. Robots.txt non impedisce l\u2019accesso a chi conosce l\u2019URL.<\/p>\n<h2>Cosa succede se robots.txt non \u00e8 raggiungibile?<\/h2>\n<p>Il comportamento dipende dal codice HTTP e dal crawler. Un errore temporaneo del server pu\u00f2 indurre il motore a sospendere la scansione per evitare di ignorare regole che potrebbero esistere. Un file non trovato viene invece generalmente interpretato come assenza di restrizioni.<\/p>\n<p>Per questo il file dovrebbe restituire rapidamente una risposta coerente e non dipendere da plugin fragili, redirect multipli o pagine di errore HTML.<\/p>\n<h2>Cache, CDN e modifiche non visibili<\/h2>\n<p>Robots.txt pu\u00f2 essere memorizzato da server, plugin, proxy e CDN. Dopo una modifica, apri il file senza autenticazione, controlla gli header e verifica la risposta da pi\u00f9 reti quando possibile.<\/p>\n<p>Se il contenuto continua a essere quello precedente:<\/p>\n<ol>\n<li>svuota la cache del sito;<\/li>\n<li>esegui il purge dell\u2019URL <code>\/robots.txt<\/code>;<\/li>\n<li>controlla la cache del CDN;<\/li>\n<li>verifica eventuali regole del web server;<\/li>\n<li>controlla se WordPress genera un file virtuale;<\/li>\n<li>assicurati che non esista un file fisico differente.<\/li>\n<\/ol>\n<h2>Robots.txt, canonical e sitemap devono essere coerenti<\/h2>\n<p>Una sitemap non dovrebbe includere URL bloccati, non canonici o reindirizzati. Allo stesso modo, una pagina canonica importante non dovrebbe essere impedita alla scansione.<\/p>\n<p>Durante l\u2019audit confronta:<\/p>\n<ul>\n<li>URL presenti nelle sitemap;<\/li>\n<li>regole Disallow;<\/li>\n<li>tag canonical;<\/li>\n<li>meta robots;<\/li>\n<li>redirect;<\/li>\n<li>link interni.<\/li>\n<\/ul>\n<p>Contraddizioni tra questi segnali rallentano la diagnosi e possono impedire al motore di leggere direttive importanti.<\/p>\n<h2>Come gestire pi\u00f9 domini e sottodomini?<\/h2>\n<p>Ogni host necessita del proprio robots.txt. Un file pubblicato su <code>www.esempio.it<\/code> non governa automaticamente <code>shop.esempio.it<\/code> o <code>staging.esempio.it<\/code>.<\/p>\n<p>Per installazioni multisito crea una tabella con host, URL del file, sitemap e ambiente. Questo evita che regole di staging vengano replicate per errore sul dominio pubblico.<\/p>\n<h2>Domande frequenti<\/h2>\n<h3>Il file robots.txt \u00e8 obbligatorio?<\/h3>\n<p>No. Se manca, i crawler possono normalmente scansionare il sito. \u00c8 utile per definire regole e indicare la sitemap.<\/p>\n<h3>Posso usare noindex nel robots.txt?<\/h3>\n<p>Non \u00e8 una soluzione supportata da Google. Usa il meta tag robots o l\u2019header HTTP e lascia la pagina accessibile alla scansione.<\/p>\n<h3>Quanto tempo serve perch\u00e9 una modifica venga recepita?<\/h3>\n<p>Dipende dalla frequenza con cui il crawler recupera il file e dalla cache. Controlla gli strumenti del motore e i log del server.<\/p>\n<h3>Devo bloccare wp-admin?<\/h3>\n<p>\u00c8 una regola comune per ridurre scansioni inutili, mantenendo consentito <code>admin-ajax.php<\/code> quando serve al frontend.<\/p>\n<h3>Robots.txt protegge dagli scraper?<\/h3>\n<p>Solo i crawler che rispettano il protocollo seguono le regole. Per bot aggressivi servono firewall, rate limit e altri controlli.<\/p>\n<p>Per una revisione pi\u00f9 ampia della visibilit\u00e0 organica consulta anche la <a href=\"https:\/\/xlogic.org\/blog\/wordpress-seo-guida-per-far-crescere-il-sito-web.html\/\">guida SEO per WordPress<\/a>. Dopo modifiche importanti controlla inoltre sitemap, canonical e stato di indicizzazione delle pagine principali.<\/p>\n<p>Quando il file viene gestito da WordPress o da un plugin SEO, conserva una copia della configurazione e verifica il risultato pubblico: la schermata del plugin non garantisce che proxy, cache o regole del server restituiscano lo stesso contenuto.<\/p>\n<h2>Conclusione<\/h2>\n<p>Configurare robots.txt significa controllare la scansione senza ostacolare contenuti e risorse importanti. Le regole devono essere semplici, documentate e testate.<\/p>\n<p>Ricorda la distinzione fondamentale: <code>Disallow<\/code> gestisce l\u2019accesso dei crawler, <code>noindex<\/code> gestisce l\u2019indicizzazione e l\u2019autenticazione protegge i contenuti privati.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Guida al file robots.txt: posizione, sintassi, direttive, sitemap, esempi per WordPress, test ed errori che possono bloccare la scansione.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"no","_lmt_disable":"","footnotes":""},"categories":[5],"tags":[],"class_list":["post-17913","post","type-post","status-publish","format-standard","hentry","category-news"],"modified_by":"Team tecnico Xlogic","_links":{"self":[{"href":"https:\/\/xlogic.org\/blog\/wp-json\/wp\/v2\/posts\/17913","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/xlogic.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/xlogic.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/xlogic.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/xlogic.org\/blog\/wp-json\/wp\/v2\/comments?post=17913"}],"version-history":[{"count":0,"href":"https:\/\/xlogic.org\/blog\/wp-json\/wp\/v2\/posts\/17913\/revisions"}],"wp:attachment":[{"href":"https:\/\/xlogic.org\/blog\/wp-json\/wp\/v2\/media?parent=17913"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/xlogic.org\/blog\/wp-json\/wp\/v2\/categories?post=17913"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/xlogic.org\/blog\/wp-json\/wp\/v2\/tags?post=17913"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}