← Torna al blog Indicizzazione e scansione

X-Robots-Tag: sintassi, quando usarlo e come verificare l'header

X-Robots-Tag: sintassi, quando usarlo e come verificare l'header

L'X-Robots-Tag è un header della risposta HTTP che dà ai motori di ricerca le stesse regole del meta robots, come noindex o nofollow, senza toccare l'HTML. È l'unica strada per i file senza <head>, come PDF e immagini, e non compare mai nel sorgente della pagina: lo si verifica con curl -I o con i DevTools.

Com'è fatto l'header

Una risposta che lo contiene si presenta così:

HTTP/2 200
content-type: application/pdf
x-robots-tag: noindex, nofollow

Puoi mettere più direttive nello stesso header, separate da virgole, oppure inviare l'header più volte. Quelle che userai di più:

Una direttiva può anche valere per un solo crawler, indicandone il nome prima: X-Robots-Tag: googlebot: noindex. Senza nome vale per tutti. Se due regole sono in conflitto, Google applica la più restrittiva.

Quando usarlo al posto del meta robots

Il meta tag richiede una pagina HTML modificabile. L'header funziona su qualsiasi cosa il server restituisca, quindi è lo strumento giusto per PDF, file Word, immagini, feed ed endpoint JSON. Un caso tipico è il listino prezzi in PDF che si posiziona sopra la pagina prodotto a cui appartiene.

Serve anche quando puoi toccare la configurazione del server ma non i template, o quando una regola deve coprire un'intera cartella.

Quello che non fa è bloccare la scansione. Google deve scaricare l'URL per leggere l'header: se il robots.txt lo blocca, il noindex non viene mai visto. La guida su come controllare il robots.txt copre quella parte.

Impostarlo su Apache, nginx e CDN

Su Apache con mod_headers, nel .htaccess o nel vhost:

<FilesMatch "\.pdf$">
  Header set X-Robots-Tag "noindex, nofollow"
</FilesMatch>

Su nginx:

location ~* \.pdf$ {
  add_header X-Robots-Tag "noindex, nofollow";
}

Attenzione a un dettaglio di nginx: un add_header dentro un blocco location sostituisce gli add_header ereditati dal blocco server. Su CDN e piattaforme di hosting lo stesso header si imposta con le regole sugli header di risposta, per esempio le Transform Rules di Cloudflare, il file _headers di Netlify o la chiave headers in vercel.json.

Come verificarlo

Da terminale:

curl -sI https://esempio.it/file.pdf | grep -i x-robots-tag
curl -sI -A "Googlebot" https://esempio.it/ | grep -i x-robots-tag

La seconda riga si presenta come Googlebot e fa emergere le regole che scattano solo per i crawler. Nei DevTools di Chrome apri la scheda Network, ricarica, clicca sul documento e leggi i Response Headers. In Search Console, quando l'header blocca l'indicizzazione, Controllo URL lo indica come motivo alla voce "Indicizzazione consentita?".

Gli errori che deindicizzano un sito intero

Il classico è l'header rimasto dallo staging. Qualcuno aggiunge Header set X-Robots-Tag "noindex" per tenere il sito di test fuori da Google, e la configurazione finisce in produzione con il lancio. Nell'HTML non c'è traccia. La guida su come intercettare un noindex in produzione passa in rassegna le strade più comuni.

Poi c'è la regola troppo larga: un pattern FilesMatch pensato per i PDF che prende tutti gli URL, un header impostato a livello di server invece che in una sola location, o una regola della CDN applicata all'intera zona invece che a un percorso.

Infine i segnali contraddittori. Una pagina con <meta name="robots" content="index"> e un header X-Robots-Tag: noindex riceve il noindex, perché vince la regola più restrittiva. La guida al tag noindex spiega come Google gestisce le due cose insieme.

Un alert quando compare un noindex nell'header

Lo scanner SEO di Deltio legge gli header della risposta oltre all'HTML su ogni URL che scansiona. Cerca il noindex nei meta robots e googlebot e nell'header X-Robots-Tag, poi confronta ogni scan con il precedente. Quando una pagina indicizzabile inizia a restituire noindex, ricevi un alert via email o Slack. Gli scan girano in automatico, più quelli manuali (3 al giorno su Starter).

L'alert riguarda il noindex. Per le altre direttive il controllo resta curl. Starter costa £24 al mese, £20 con fatturazione annuale, e puoi provarlo gratis per 14 giorni.

Domande frequenti

Meglio l'X-Robots-Tag o il meta robots?
Per Google l'effetto è lo stesso. Il meta tag è più comodo per le pagine HTML gestite da un CMS, mentre l'header è l'unica opzione per PDF, immagini e altri file non HTML e si presta alle regole applicate a intere cartelle dal server.
Posso mettere il noindex nel robots.txt?
No. Google ha smesso di supportare le regole noindex nel robots.txt nel 2019. Per tenere un URL fuori dall'indice usa il meta robots o l'header X-Robots-Tag, e lascia che il robots.txt consenta la scansione dell'URL, altrimenti Google non legge la direttiva.
Bing supporta l'header X-Robots-Tag?
Sì. Bing legge l'X-Robots-Tag e supporta le direttive comuni come noindex e nofollow. Le direttive rivolte a un user agent specifico, come googlebot, valgono solo per quel crawler.
Come tolgo in fretta un PDF da Google?
Servi il PDF con l'header X-Robots-Tag: noindex e aspetta che Google lo scansioni di nuovo. Se deve sparire prima, lo strumento Rimozioni di Search Console lo nasconde per circa sei mesi, mentre il noindex fa effetto.
Deltio mi avvisa se compare un noindex nell'X-Robots-Tag?
Sì. Lo scanner SEO di Deltio controlla l'header X-Robots-Tag e i meta robots su ogni URL scansionato e confronta gli scan consecutivi. Se una pagina inizia a restituire noindex, invia un alert via email o Slack.