X-Robots-Tag SEO: gestire l'indicizzazione di PDF e file

X-Robots-Tag SEO: gestire l'indicizzazione di PDF e file

Il tag meta robots funziona benissimo su una pagina HTML, ma esiste solo dentro il <head> di un documento HTML. Che fai con un PDF che vuoi togliere dall'indice? Un PDF non ha un <head>. Nemmeno un'immagine JPEG, un video MP4 o un foglio di calcolo XLSX ce l'hanno. Se il file non è HTML, semplicemente non esiste un posto dove infilare un tag meta.

L'X-Robots-Tag risolve esattamente questo problema. Invece di vivere dentro il documento, viaggia nell'intestazione della risposta HTTP, la parte di dati che il server invia insieme al contenuto vero e proprio, prima ancora che il browser o il crawler comincino a leggerlo. Siccome ogni richiesta HTTP produce un'intestazione a prescindere dal tipo di file restituito, l'X-Robots-Tag funziona su qualunque cosa il server serva: PDF, immagini, video, file XML, e naturalmente anche le normali pagine HTML. È la stessa logica del meta robots, applicata a un livello che copre tutto quello che il meta robots non può toccare.

Cos'è, tecnicamente

L'X-Robots-Tag è un'intestazione HTTP personalizzata che il server aggiunge alla risposta insieme alle intestazioni standard, come Content-Type o Content-Length. Quando un crawler come Googlebot richiede una risorsa, il server risponde prima con le intestazioni e poi con il corpo del file. Il crawler legge l'intestazione prima ancora di scaricare ed elaborare il contenuto, e quindi sa già come trattare quella risorsa nell'indice.

La sintassi è una stringa semplice: il nome del crawler a cui è rivolta l'istruzione (opzionale) seguito dalle direttive separate da virgola. X-Robots-Tag: noindex dice a qualunque crawler di non indicizzare quella risorsa. X-Robots-Tag: googlebot: noindex, nofollow rivolge l'istruzione specificamente a Googlebot. Le due forme convivono senza conflitti sullo stesso sito.

Perché il meta robots non basta

Il meta robots resta lo strumento giusto per una pagina HTML normale, ma ha un vincolo strutturale che spesso si scopre solo quando è troppo tardi: può esistere solo dentro l'elemento head di un documento HTML. Un PDF, un'immagine, un video o un file Excel non hanno un head perché non sono documenti HTML: sono formati binari o testuali organizzati in modo completamente diverso. Non c'è un punto in cui inserire un tag meta robots dentro un PDF, perché il PDF non è strutturato per contenerlo.

Questo diventa un problema concreto più spesso di quanto sembri: un listino prezzi in PDF che va aggiornato ogni trimestre e continua a comparire nei risultati con dati superati, un vecchio whitepaper che non dovrebbe più essere la prima cosa che un potenziale cliente trova, una scheda tecnica in formato immagine indicizzata nella ricerca immagini al posto della pagina prodotto aggiornata. Senza l'X-Robots-Tag, per questi file non esiste alcun modo di comunicare 'non indicizzare questo' ai motori di ricerca, a parte impedirne del tutto la scansione, cosa che, come vedremo, non produce affatto l'effetto desiderato.

Le direttive disponibili

L'X-Robots-Tag accetta esattamente lo stesso vocabolario del meta robots, perché tecnicamente sono due modi diversi di trasmettere la stessa istruzione al crawler. Le direttive che si usano più spesso sono queste:

  • noindex — non includere questa risorsa nell'indice, e rimuovila se è già presente
  • nofollow — non seguire i link contenuti nella risorsa (ha senso per l'HTML, non per un PDF o un'immagine)
  • none — equivale a usare insieme noindex e nofollow
  • noarchive — non conservare né mostrare una copia salvata nella cache del motore di ricerca
  • nosnippet — non mostrare un'anteprima di testo o video accanto al risultato di ricerca
  • max-snippet:[numero] — limita la lunghezza dello snippet testuale a un certo numero di caratteri
  • max-image-preview:[none|standard|large] — limita la dimensione massima dell'anteprima immagine nei risultati
  • unavailable_after:[data] — smetti di mostrare questa risorsa nei risultati dopo la data indicata

Casi d'uso concreti

I casi in cui l'X-Robots-Tag è davvero lo strumento giusto, e non solo un'alternativa teorica al meta robots, tendono a ripetersi da un sito all'altro.

Deindicizzare i PDF. Cataloghi prodotto, listini, whitepaper e report scaricabili finiscono indicizzati con una certa facilità e continuano a comparire nei risultati anche dopo essere stati sostituiti da versioni più recenti. Applicare noindex via X-Robots-Tag a tutti i file con estensione pdf sotto una determinata cartella è il modo diretto per tenerli fuori dall'indice senza dover intervenire su ogni singolo file uno per uno.

Tenere fuori ambienti di staging e file interni. Un sottodominio di test, un export in CSV generato per uso interno, un file di log raggiungibile via URL diretto: sono risorse che il server deve comunque restituire a chi ne conosce l'indirizzo esatto, ma che non hanno alcun motivo di comparire in una ricerca. Applicare l'X-Robots-Tag all'intero percorso è più affidabile che sperare che nessuno ci arrivi per caso.

Far scadere contenuti legati a un tempo preciso. Un annuncio di lavoro ormai chiuso, la pagina di un evento passato, una promozione con una data di fine ben definita: unavailable_after dice al motore di ricerca quando smettere di mostrare quella pagina nei risultati, senza dover ricordarsi di tornare a rimuoverla manualmente il giorno dopo la scadenza.

L'errore che vanifica tutto: bloccare e noindexare insieme

Qui si gioca la parte più importante di questo argomento, ed è anche l'errore più comune in assoluto. Un'intestazione HTTP viene letta dal crawler nel momento in cui il crawler richiede quella risorsa. Se il file è bloccato in robots.txt, il crawler non lo richiede mai: si ferma prima, rispettando il divieto di scansione. Questo significa che non riceve mai la risposta del server, non legge mai l'intestazione, e di conseguenza non vede mai il noindex che hai impostato con tanta attenzione.

Il risultato pratico è l'esatto opposto di quello che si voleva ottenere. La pagina resta bloccata alla scansione ma può comunque comparire nei risultati di ricerca, tipicamente con una dicitura del tipo 'nessuna informazione disponibile per questa pagina', perché il motore di ricerca sa che l'URL esiste, magari perché è linkato da qualche parte, ma non può visitarlo per scoprire cosa contiene o per leggerne le istruzioni. Il noindex non serve a niente, semplicemente perché nessuno lo ha mai letto.

Vale esattamente lo stesso discorso per il meta robots: un tag noindex dentro il head di una pagina bloccata in robots.txt è altrettanto inutile, per lo stesso identico motivo strutturale.

La sequenza corretta è l'opposto di quella intuitiva: per far sparire davvero qualcosa dall'indice, bisogna permettere al crawler di raggiungerlo, così che possa leggere il noindex ed eseguirlo. Solo dopo che la risorsa è stata effettivamente rimossa dall'indice, cosa verificabile in Search Console, ha senso, se proprio lo si desidera, chiuderla anche alla scansione per risparmiare crawl budget. Bloccare e noindexare nello stesso momento equivale a chiudere una porta a chiave e infilare sotto la porta un biglietto per chi doveva entrarci: nessuno lo leggerà mai.

Come impostarlo lato server

L'X-Robots-Tag non si scrive dentro un file di contenuto: si configura a livello di risposta HTTP, e ci sono due punti in cui questo può avvenire.

Il primo è la configurazione del server web. La maggior parte dei server permette di associare un'intestazione personalizzata a un percorso, a un tipo di file o a un'estensione specifica, per esempio aggiungendo quella intestazione a ogni richiesta che restituisce un file con estensione pdf sotto una determinata cartella. È l'approccio più adatto quando la regola riguarda un'intera categoria di file e non deve dipendere da alcuna logica applicativa.

Il secondo è il livello applicativo: se il contenuto viene generato o servito direttamente dal codice dell'applicazione, per esempio un endpoint che genera un report o una route che serve file caricati dagli utenti, l'applicazione stessa può impostare l'intestazione nel momento in cui costruisce la risposta, condizionandola a qualunque logica serva, un flag nel database, il ruolo dell'utente, una data di scadenza calcolata al volo.

In entrambi i casi il principio resta lo stesso: l'intestazione va agganciata alla risposta per quel percorso o per quel tipo di risorsa specifico, non inserita una volta per tutte in un punto centrale che finirebbe per applicarla, per errore, a ogni pagina del sito.

Come verificarlo, perché è invisibile nel sorgente

L'X-Robots-Tag è invisibile a chi guarda il codice sorgente della pagina, perché non è un tag HTML: non comparirà mai facendo 'visualizza sorgente' o ispezionando il DOM del browser, per quanto a lungo si cerchi. Bisogna guardare le intestazioni della risposta HTTP, non il contenuto della pagina.

I modi più diretti per controllarlo sono pochi e veloci: aprire gli strumenti per sviluppatori del browser, andare nella scheda Rete, ricaricare la pagina, selezionare la richiesta del documento principale (o del file, se si tratta di un PDF) e controllare le intestazioni di risposta, dove X-Robots-Tag comparirà se è stato impostato. Da riga di comando, una richiesta che recupera solo le intestazioni senza scaricare il corpo del file è il modo più rapido per controllare in sequenza molti URL diversi. Diversi strumenti SEO che analizzano le intestazioni HTTP, e non solo il codice HTML, segnalano automaticamente l'X-Robots-Tag durante una scansione del sito, il che aiuta ad accorgersi se qualcuno lo ha impostato per errore su un'intera sezione.

  • Scheda Rete degli strumenti per sviluppatori del browser, sulla richiesta del documento o del file
  • Una richiesta da riga di comando che restituisce solo le intestazioni della risposta
  • Un crawler SEO che analizza anche le intestazioni HTTP, non solo il markup HTML

Domande frequenti

Posso usare X-Robots-Tag e meta robots insieme sulla stessa pagina HTML?

Sì, ma è ridondante: basta un'istruzione coerente in uno dei due punti. Se li usi entrambi, assicurati che dicano la stessa cosa, perché istruzioni contrastanti creano un'ambiguità che il crawler risolve a modo suo, non necessariamente come vorresti tu.

L'X-Robots-Tag blocca anche la scansione, oltre all'indicizzazione?

No. Direttive come noindex riguardano solo la presenza nell'indice, non impediscono al crawler di visitare la risorsa, anzi il crawler deve poterla visitare per leggere l'intestazione stessa. Per impedire la scansione serve robots.txt, che è una cosa diversa e va usata con cautela insieme al noindex.

Posso applicare l'X-Robots-Tag solo alle immagini di una cartella?

Sì, è uno degli usi più comuni: si configura la regola per un percorso o un'estensione specifica, per esempio tutti i file con estensione jpg sotto una cartella di archivio, senza toccare il resto del sito.

Funziona solo con Google?

La sintassi con il prefisso del nome del crawler, come googlebot seguito da due punti, permette di rivolgere l'istruzione a un motore specifico, ma senza prefisso la direttiva viene generalmente rispettata dai crawler dei principali motori di ricerca che supportano lo standard.

Cosa succede se dimentico di rimuovere unavailable_after dopo la data indicata?

La risorsa continua a essere esclusa dai risultati anche dopo quella data, perché la direttiva ha già avuto effetto. Per farla ricomparire bisogna rimuovere l'intestazione o aggiornarne la data.

Aggiornato: 1 ottobre 2026

Tutti gli articoli