Se il robots.txt decide cosa il crawler può leggere, le direttive robots decidono cosa il motore può fare con ciò che ha letto. Sono lo strumento corretto per tenere una pagina fuori dall'indice, per limitare lo snippet nei risultati o per evitare che vengano seguiti i link. Esistono in due forme: un tag nell'HTML e un header HTTP.
Le due forme
Il meta tag
Si inserisce nella sezione <head> della pagina:
<meta name="robots" content="noindex, follow">
Il valore robots si rivolge a tutti i crawler. Si può indirizzare un motore specifico sostituendolo con il nome del suo crawler, per esempio googlebot.
L'header HTTP
La stessa istruzione può viaggiare nella risposta del server:
X-Robots-Tag: noindex
L'header è indispensabile per i file che non hanno un <head>: PDF, immagini, documenti scaricabili, feed. È anche comodo per applicare una regola a interi gruppi di file tramite la configurazione del server, senza toccare il codice delle pagine.
Le direttive principali
| Direttiva | Effetto |
|---|---|
noindex |
la pagina non deve comparire nei risultati |
nofollow |
i link della pagina non devono essere seguiti |
none |
equivale a noindex, nofollow |
nosnippet |
nessuna anteprima di testo nei risultati |
max-snippet:[n] |
limita lo snippet a n caratteri |
max-image-preview:[none, standard, large] |
dimensione massima dell'anteprima immagine |
noimageindex |
le immagini della pagina non vanno indicizzate |
unavailable_after:[data] |
non mostrare la pagina dopo una certa data |
I valori index e follow sono il comportamento predefinito: scriverli non fa danni, ma non aggiunge nulla.
Esiste anche l'attributo data-nosnippet, applicabile a singoli elementi HTML, per escludere dallo snippet solo una porzione di testo, come un avviso ripetuto o un dato che non si vuole mostrare in anteprima.
La regola d'oro: il crawler deve poter leggere
Una direttiva robots funziona solo se il motore scarica la pagina. Se l'URL è bloccato in robots.txt, il noindex non viene mai visto. È la confusione più diffusa: si blocca e si aggiunge noindex «per sicurezza», ottenendo l'effetto opposto a quello desiderato.
La sequenza corretta per togliere dall'indice una pagina esistente è:
- lasciare la scansione consentita;
- aggiungere
noindex; - attendere che il motore ripassi e la rimuova;
- solo a quel punto, se serve risparmiare scansioni, valutare un blocco.
Quando le istruzioni si contraddicono
Se in una pagina compaiono più direttive, ad esempio un meta tag e un header, o due meta tag generati da plugin diversi, i motori tendono ad applicare la più restrittiva. Un index nel tema e un noindex aggiunto da un plugin portano al noindex.
Altri conflitti tipici:
- noindex e canonical insieme: dire «non indicizzarmi» e «la versione principale sono io» o «sono un duplicato di quest'altra» manda segnali discordanti. Meglio scegliere uno solo dei due strumenti in base all'obiettivo;
- noindex su pagine nella sitemap: la sitemap dovrebbe elencare solo URL che si vogliono indicizzati;
- noindex su pagine molto linkate internamente: se una pagina è esclusa ma riceve molti link, forse va riconsiderata la struttura.
Casi d'uso concreti
- Risultati di ricerca interna: di solito
noindex, perché generano infinite combinazioni a basso valore. - Pagine di ringraziamento dopo un acquisto o un modulo:
noindex, non servono a chi cerca. - Documenti PDF duplicati di pagine HTML: header
X-Robots-Tag: noindexper far emergere la versione web. - Pagine di archivio con contenuto scarso, come tag con un solo articolo:
noindexfinché non crescono. - Offerte a scadenza:
unavailable_afterevita che restino visibili oltre la data.
Un esempio di configurazione per i PDF
Su un server Apache, per esempio, si può applicare l'header a tutti i PDF di una cartella:
<FilesMatch "\.pdf$">
Header set X-Robots-Tag "noindex"
</FilesMatch>
L'equivalente esiste in Nginx e nella maggior parte delle CDN. Dopo la modifica conviene verificare la risposta con uno strumento che mostri gli header, perché un errore di sintassi qui è silenzioso.
Come controllare cosa vede il motore
Il sorgente HTML non basta. Bisogna verificare:
- il DOM renderizzato, perché un
noindexpuò essere aggiunto o tolto da JavaScript; - gli header HTTP della risposta finale, dopo eventuali redirect;
- il rapporto dell'ispezione URL negli strumenti per webmaster, che indica se l'esclusione è dovuta a noindex.
Un crawler desktop configurato per leggere sia i meta tag sia gli header permette di fare lo stesso controllo su tutto il sito in una volta.
In sintesi
- Il meta robots vale per le pagine HTML, l'X-Robots-Tag per qualsiasi file.
- Il noindex funziona solo se la pagina può essere scansionata.
- Con direttive in conflitto prevale la più restrittiva.
- Non mettere in sitemap le pagine marcate noindex.
- Verifica DOM renderizzato e header, non solo il sorgente.