Come funziona questo controllo
Scanaris fa tre cose. Primo, richiede /robots.txt e lo considera valido solo se risponde 200 e non è HTML (le single-page app restituiscono la loro pagina per qualsiasi percorso); altrimenti apre un rilievo di gravità bassa. Secondo, richiede /sitemap.xml e lo considera valido se risponde 200 e contiene un tag <urlset> o <sitemapindex>; se non lo trova lì ma il robots.txt ha una riga Sitemap:, lo accetta comunque; altrimenti, rilievo di gravità bassa. Terzo, guarda se la pagina scansionata porta noindex, nel tag <meta name="robots"> o nell'header HTTP X-Robots-Tag; se sì, apre un rilievo di gravità media, perché quella pagina non comparirà su Google.
Perché è importante
Il robots.txt è il primo URL che qualsiasi crawler visita e dove gli dici cosa può percorrere e dov'è la tua sitemap. La sitemap è la lista di URL che vuoi che Google indicizzi, con la data di modifica: senza, Google scopre le tue pagine seguendo i link, che è più lento e si perde quelle poco collegate. Entrambi sono di gravità bassa perché la loro assenza non impedisce l'indicizzazione, la peggiora soltanto. Il noindex è un'altra cosa: è un ordine diretto a Google di non mostrare quella pagina, e nella home significa che il tuo sito non esiste nel motore di ricerca. È l'errore SEO più devastante e più silenzioso che ci sia, e quasi sempre è un residuo dell'ambiente di test.
Come risolvere
robots.txt
User-agent: *
Allow: /
Sitemap: https://tuodominio.it/sitemap.xml
File di testo semplice nella radice. In Nuxt e Next.js ci sono moduli e convenzioni (app/robots.ts) che lo generano; in un sito statico, va nella cartella public. Non elencarci rotte private: è pubblico e le staresti indicando a chiunque, come spiega percorsi sensibili in robots.
Sitemap
- Nuxt: il modulo sitemap la genera dalle rotte e dagli URL che gli passi (post, prodotti).
- Next.js: un file
app/sitemap.tsche restituisce la lista di URL. - WordPress: la genera da solo dalla versione 5.5 in
/wp-sitemap.xml; aggiungi quella riga al robots o lascia che Yoast o Rank Math la mettano in/sitemap_index.xml. - Astro, Hugo, Jekyll: un plugin o un'integrazione ufficiale.
Solo URL indicizzabili, canonici e che rispondono 200. Inviala in Google Search Console e Bing Webmaster Tools: così saprai quanti di quegli URL sono davvero indicizzati.
noindex nella pagina
Cerca da dove viene. In Nuxt, il modulo robots può impostare noindex in base a una variabile d'ambiente che a volte viene copiata dall'ambiente di test a quello di produzione. In Next.js, metadata.robots. In WordPress, l'impostazione "Scoraggia i motori di ricerca dall'indicizzare questo sito" nelle Impostazioni di lettura, che qualcuno ha attivato per il sito in costruzione. Su Vercel, i deploy di anteprima portano X-Robots-Tag: noindex automaticamente, ma quello di produzione no; se lo vedi in produzione, l'hai aggiunto tu nella configurazione degli header.
Verifica che sia risolto
curl -s https://tuodominio.it/robots.txt
curl -s https://tuodominio.it/sitemap.xml | head -5
curl -sI https://tuodominio.it | grep -i x-robots-tag
curl -s https://tuodominio.it | grep -oiE '<meta name="robots"[^>]*>'
I primi due devono mostrare testo e XML, non HTML. Gli ultimi due non devono contenere noindex (una meta robots con index, follow o max-image-preview è normale).
Domande frequenti
La mia sitemap è in un altro percorso, come /sitemap_index.xml.
Va bene qualsiasi percorso purché il robots.txt lo referenzi con la riga Sitemap:. Il controllo la cerca lì prima di dare il rilievo.
Voglio che il mio sito non compaia su Google per ora.
Allora il noindex è corretto e puoi accettare il rilievo. Ma mettiti un promemoria: la maggior parte dei siti con noindex in produzione non ce l'ha apposta.
Il robots.txt influisce sui bot di IA?
Sì, è lo stesso file in cui si permette o si blocca GPTBot, ClaudeBot o PerplexityBot. Cosa stai permettendo e cosa conviene lo guarda crawler di IA.