Guida · Internazionalizzazione
hreflang: il cluster completo, su ogni pagina
hreflang serve a una sola cosa: dire a un motore che più indirizzi portano lo stesso contenuto in lingue diverse, e quale mostrare a chi. È una dichiarazione collettiva: appartiene al gruppo intero, pagina dopo pagina. Vale pienamente non appena ogni pagina del gruppo porta la lista completa. L'abbiamo imparato sul nostro stesso sito.
Quattro regole, e bastano
hreflang si legge in chiaro, regola per regola. Le quattro regole qui sotto si verificano dalla pagina servita, sulla sola base di ciò che essa restituisce, e la quarta è quasi sempre quella che resta da mettere.
01
La reciprocità
Se la pagina A dichiara la pagina B, la pagina B deve dichiarare la pagina A. Il motore trattiene una dichiarazione quando entrambi i lati la restituiscono: la conferma reciproca è ciò che le dà forza, ed è su di essa che si appoggia.
Verificarlo: Prendete due versioni di una stessa pagina e leggete le loro dichiarazioni una accanto all'altra. Ciascuna deve citare l'altra, con l'indirizzo esatto servito dall'altra — stesso protocollo, stesso dominio, stessa barra finale.
Metterlo in atto: Generare le dichiarazioni da un'unica e medesima lista di versioni, con un solo gesto per tutte le pagine anziché a mano. Una lista unica rende la reciprocità automatica.
02
Ogni pagina si dichiara da sé
Il gruppo si legge dal punto di vista di una qualsiasi delle sue pagine. Una pagina che cita se stessa oltre alle proprie traduzioni rende il gruppo completo, visto da tutte le altre.
Verificarlo: Sulla versione francese, cercate la dichiarazione hreflang="fr". Deve esserci, e puntare alla pagina che state leggendo.
Metterlo in atto: La lingua della pagina fa parte del cluster allo stesso titolo delle altre. È la dichiarazione che si dimentica più spesso, perché sembra ridondante — pesa invece esattamente quanto le altre.
03
x-default
x-default indica la versione servita al visitatore la cui lingua ricade al di fuori delle lingue dichiarate. È il ripiego del gruppo: occupa una dichiarazione a pieno titolo e punta a una delle versioni esistenti.
Verificarlo: Contate: una dichiarazione per lingua servita, più una per x-default. Sul nostro sito, otto lingue più x-default fanno nove dichiarazioni per pagina.
Metterlo in atto: Scegliere una versione di ripiego e designarla ovunque allo stesso modo. x-default si mette su ogni pagina del gruppo, esattamente come le altre.
04
Il cluster parziale — l'errore più frequente
È il nostro stesso incidente, rilevato il 1° settembre 2026 nella nostra Search Console: pagine «scansionate, attualmente non indicizzate», su un sito peraltro tecnicamente sano. Ogni pagina dichiarava solo una parte delle versioni del gruppo. La pagina neerlandese annunciava fr e nl; la pagina francese, fr e en. Sei lingue su otto restavano da agganciare alla rete.
Verificarlo: I motori restano silenziosi su questo punto: è il conteggio che parla. Contate i tag di una pagina tradotta, poi confrontate questa lista con quella di un'altra pagina del gruppo — le due liste devono essere identiche.
Metterlo in atto: Il cluster COMPLETO su OGNI pagina, francese incluso — il francese, le altre sette lingue, poi x-default. L'operazione è idempotente: le vecchie dichiarazioni vengono rimosse prima che siano poste le nuove, così che una ripubblicazione lasci sempre una sola generazione di tag al suo posto.
Ciò che dichiara una pagina di questo sito
Il sito è servito in otto lingue. Ogni sua pagina porta quindi la stessa lista, nello stesso ordine, qualunque sia la lingua che si sta leggendo — più x-default, che indica la versione mostrata al visitatore la cui lingua non rientra tra le otto dichiarate.
- fr Italiano
- en Inglese
- es Spagnolo
- de Tedesco
- it Italiano
- pt Portoghese
- nl Olandese
- pl Polacco
- x-default Fallback
Nove dichiarazioni per pagina, identiche da una versione all'altra. La pagina francese è alla pari con tutte le altre: porta la stessa lista di quella polacca.
Dove inserire le dichiarazioni
Tre posizioni sono valide, e una sola è sufficiente:
- Nel <head> della pagina. Un elemento per ogni versione, ciascuno con la propria lingua e il proprio indirizzo assoluto. È la posizione più semplice da verificare: la dichiarazione si legge nella risposta HTML.
- Nell'header HTTP. L'unica posizione disponibile per un documento servito fuori dall'HTML — un PDF, per esempio.
- Nella sitemap. Ogni voce URL contiene le versioni del gruppo in xhtml:link. Il vantaggio è il volume: l'intero gruppo si dichiara una volta sola, in un file che controllate voi.
Le inseriamo nel <head> E nella sitemap. Le due posizioni si leggono in modo indipendente: se una viene letta prima dell'altra, il gruppo è già noto.
Come verificare
La verifica si riduce a tre gesti, e il primo è un conteggio. Richiedete la pagina servita, contate le sue dichiarazioni hreflang e confrontate quel numero con il numero di lingue che servite, più una per x-default. Uno scarto di una sola unità indica un cluster incompleto.
Rifate il conteggio su una seconda versione della stessa pagina: le due liste devono essere identiche, indirizzo per indirizzo. Infine, seguite un indirizzo dichiarato e verificate che restituisca la dichiarazione inversa. Questi tre gesti si svolgono interamente nella risposta HTML — il vostro browser è sufficiente, così come è già installato.
Dal nostro incidente, il nostro controllo di pubblicazione lascia uscire una pagina solo se dichiara esattamente tanti tag hreflang quante sono le lingue servite, più x-default. Il controllo avviene al momento della pubblicazione: ciò che va online porta il cluster completo.
Contare le tue dichiarazioni dal tuo browser
Il Verificatore legge il tuo indirizzo e ti restituisce lo stato dei tuoi segnali, gratuitamente, in una decina di secondi. Il tuo sito resta esattamente il tuo: tutto avviene in lettura, da noi. L'Audit SEO Records va oltre: legge la tua mappa per intero, pagina per pagina, e ti consegna il referto datato. E se vuoi che i segnali vengano corretti nel momento in cui la pagina viene servita, SEO Records lo fa a partire da 199 € all'anno.