Ad esempio, errori nel formato del codice lingua o percorsi di link incompleti possono impedire ai motori di ricerca di riconoscere correttamente la lingua o la regione della pagina, o addirittura causare una competizione tra pagine multilingue, facendo perdere traffico al pubblico target.
Questo articolo, dal punto di vista tecnico e pratico, riassume i 7 errori più comuni nella configurazione hreflang, suggerendo di utilizzare strumenti per verifiche periodiche, così da evitare che piccoli errori compromettano l’efficacia globale dell’ottimizzazione.

Errore nel formato del codice lingua o regione
Ad esempio, usare lettere maiuscole (come EN-US
) o errori di ortografia (come scrivere zh-CN
come zh-CH
) può impedire ai motori di ricerca di interpretare correttamente la regione target della pagina, o addirittura far considerare il tag non valido.
Anche se il codice sembra corretto (come usare es-ES
invece di es
), informazioni ridondanti possono interferire con la logica di corrispondenza.
L’impatto è significativo: per esempio, il traffico di ricerca degli utenti spagnoli potrebbe essere erroneamente indirizzato alla pagina in portoghese.
Regole del codice standard ISO
- Codice lingua: Deve usare lettere minuscole secondo lo standard ISO 639-1 (es.
en
, es
, zh
), abbreviato in 2 lettere. - Codice regione: Opzionale, usa lettere maiuscole secondo ISO 3166-1 (es.
US
, GB
, CN
), abbreviazione di paese o regione. - Formato combinato: Separare lingua e regione con un trattino, per esempio
en-US
(inglese americano), zh-CN
(cinese semplificato).
Eccezioni:
- Solo codice lingua (es.
fr
) indica che è rivolto a tutti i parlanti francesi, senza limitazioni geografiche. - Per il cinese tradizionale usare
zh-Hant
(cinese tradizionale) o zh-Hant-TW
(tradizionale di Taiwan), non zh-TW
(che potrebbe essere interpretato come cinese semplificato di Taiwan).
Scenari tipici di errore e conseguenze
Errore 1: confusione maiuscole/minuscole
- Esempi errati:
EN-us
(lingua maiuscola + regione minuscola), Zh-cn
(prima lettera della lingua maiuscola). - Conseguenza: I motori di ricerca potrebbero ignorare completamente il tag, impedendo alla pagina di raggiungere gli utenti target.
Errore 2: errori di ortografia o codici inventati
- Esempi errati:
pt-BZ
(il codice corretto per Brasile è BR
), eu
(lingua basca, che però alcuni motori potrebbero non supportare). - Conseguenza: Lingue rare o codici regione errati portano a indicizzazione errata, con traffico che va alla pagina nella lingua predefinita.
Errore 3: codici ridondanti o combinazioni errate
- Esempi errati:
es-ES
(spagnolo + Spagna, in realtà basta es
), en-US-UK
(combinazione invalida di regioni multiple). - Conseguenza: Informazioni ridondanti confondono i motori, che potrebbero preferire pagine concorrenti più semplici.
Strumenti consigliati e metodi di verifica
- Google hreflang Test Tool: Inserisci direttamente l’URL per verificare se il codice viene interpretato correttamente (usare insieme a Search Console).
- Screaming Frog: Durante la scansione del sito, filtra i tag hreflang e esporta gli errori in batch (funzionalità premium).
- Hreflang Validator (strumento di terze parti): Controllo online gratuito, segnala errori di formato e link in conflitto.
Passi pratici per la correzione
Controllo del codice esistente: Nel caso di siti WordPress, utilizzare plugin (come Yoast SEO) o visualizzare direttamente il codice sorgente della pagina per trovare i tag <link rel="alternate" hreflang="..." />
.
Sostituzione di massa di codici errati:
- Se utilizzi un plugin multilingue (come WPML), modifica direttamente il formato del “codice lingua” nelle impostazioni della lingua.
- Durante la modifica manuale, assicurati che tutte le pagine abbiano un formato uniforme (ad esempio sostituire globalmente
EN
con en
).
Aggiunta del codice regionale (opzionale):
- Aggiungi solo se necessario segmentare le regioni (ad esempio
en-GB
per utenti britannici), altrimenti mantieni solo il codice lingua puro (ad esempio fr
).
Rivalidazione:Usa uno strumento per ricontrollare e assicurarti che le pagine corrette restituiscano il codice di stato 200 e non presentino errori di crawling.
Non usare URL assoluti completi
Molti webmaster pensano erroneamente che percorsi relativi (come /de/page
) o omettere il protocollo (come example.com/de
) semplifichi la configurazione, ma ciò può causare problemi seri.
Ad esempio, se una pagina esiste sia nelle versioni http
che https
, non specificare il protocollo può far interpretare al motore di ricerca due pagine distinte, disperdendo il valore SEO.
Inoltre, nei siti con sottodomini o strutture a sottocartelle, non usare URL completi può causare ambiguità nel percorso e il fallimento dei tag (ad esempio quando si mescolano URL per dispositivi mobili e desktop).
Definizione e necessità degli URL assoluti
URL assoluto deve includere protocollo (http://
o https://
), dominio completo e percorso (come https://www.example.com/de/page
).
Necessità:
- I motori di ricerca devono distinguere chiaramente le pagine. I percorsi relativi (come
/de/page
) possono essere interpretati come qualsiasi versione del dominio (http o https), causando contenuti duplicati. - Nei sottodomini o sottocartelle, non usare URL assoluti può far interpretare erroneamente la proprietà della pagina (ad esempio
de.example.com/page
e www.example.com/de/page
possono essere considerati pagine differenti).
Situazioni tipiche problematiche:
- Le pagine esistono sia nelle versioni http che https, ma hreflang non include il protocollo, causando dispersione del valore SEO.
- Contenuti condivisi tra versione mobile e desktop con URL diversi (come
m.example.com/de
e example.com/de
) senza collegamento tramite URL assoluti.
Errori comuni e conseguenze
Errore 1: percorsi relativi o mancanza di protocollo
Esempi errati:
<link hreflang="de" href="/de/page" />
(percorso relativo)<link hreflang="es" href="www.example.com/es/page" />
(manca https://
)
Conseguenze:
- I motori potrebbero interpretare
/de/page
come http://example.com/de/page
, mentre la pagina reale è su https, causando malfunzionamento del tag hreflang. - Le versioni http e https della pagina sono considerate entità separate, causando contenuti duplicati e dispersione del valore SEO.
Errore 2: sottodomini non uniformi
- Esempio errato: il sito principale usa
https://example.com/fr/page
, ma il sottosito francese usa un URL diverso.
https://fr.example.com/page
e gli attributi hreflang non si riferiscono reciprocamente a URL assoluti.Conseguenza: I motori di ricerca non riescono a stabilire una correlazione tra il sottodominio e le pagine del sito principale, e gli utenti francesi potrebbero essere indirizzati alla pagina della lingua predefinita.Errore 3: Parametri dinamici non standardizzati
- Esempio di errore:
<link hreflang="ja" href="https://example.com/page?lang=ja" />
(contiene parametri di tracciamento) - Conseguenza: I motori di ricerca potrebbero considerare queste URL come pagine diverse (ad esempio
?lang=ja
e ?lang=ja&utm=ads
), causando una copertura incompleta dei tag hreflang.
Metodi di verifica tramite strumenti
- Google Search Console:
Controllare nel rapporto di copertura gli errori dovuti a “pagine duplicate” o “hreflang non marcato” per individuare URL incomplete. - Screaming Frog:
Dopo la scansione del sito, filtrare i tag hreflang
e verificare se gli attributi href
sono tutti URL assoluti (filtro: //example.com
o /path
). - Sitebulb:
Nel rapporto di audit SEO internazionale segnala direttamente “URL hreflang incomplete” e fornisce suggerimenti per la correzione.
Soluzioni e passaggi pratici
Sistemi CMS (come WordPress):
Configurazione plugin:
Se si usano plugin come Yoast SEO, abilitare la generazione di URL assoluti nelle impostazioni multilingua (di solito disabilitando l’opzione “percorsi relativi”).
Sostituzione batch nel database:
Con comandi SQL o plugin come Better Search Replace, sostituire href="/
con href="https://www.example.com/
.
Correzione manuale del codice:
Nel codice HTML o nella logica di rendering lato server, assicurarsi che tutti i link hreflang siano formattati come URL completi, ad esempio:
Configurazione server:
- Forzare il protocollo unificato: tramite .htaccess o configurazione Nginx, reindirizzare automaticamente da http a https per evitare contenuti misti.
- Normalizzazione URL: applicare redirect 301 per variazioni di percorso che puntano allo stesso contenuto (es. /de e /de/) per garantire un’unica URL assoluta.
Mancanza del tag hreflang autoreferenziale
Ad esempio, se una pagina in francese indica solo i link alle versioni in inglese, spagnolo o altre lingue, ma non dichiara hreflang="fr"
che punta a se stessa,
I motori di ricerca potrebbero non riconoscere correttamente la lingua della pagina, causando un errato posizionamento nei risultati di ricerca per utenti francofoni.
Ruolo e necessità del tag hreflang autoreferenziale
Il tag autoreferenziale è la dichiarazione hreflang che punta a sé stessa nella pagina (ad esempio, una pagina in francese deve includere <link rel="alternate" hreflang="fr" href="URL della pagina stessa"/>
).
Funzioni principali:
- Definire chiaramente per i motori di ricerca la lingua/area della pagina per evitare classificazioni errate.
- Creare un ciclo chiuso tra le versioni in diverse lingue per garantire un corretto trasferimento del peso tra le pagine.
Conseguenze della mancanza:
- I motori di ricerca potrebbero considerare la pagina come “lingua non dichiarata” e assegnarla di default alla directory principale della lingua, causando una perdita di traffico degli utenti target.
- In scenari di competizione multilingue (ad esempio pagine in inglese e spagnolo senza auto-riferimento), potrebbero verificarsi problemi di contenuti duplicati interni.
Scenari comuni di errore e analisi dei casi
Errore 1: uso errato di hreflang in siti monolingua
- Scenario: pagina con una sola versione linguistica, ma con hreflang che punta a pagine in altre lingue inesistenti.
- Esempio di conseguenza: una pagina di un sito monolingua inglese aggiunge
hreflang="en"
che punta a se stessa, ma collega erroneamente anche a una pagina inesistente con hreflang="es"
, causando confusione nei motori di ricerca.
Errore 2: configurazione errata del plugin multilingue
- Esempio di scenario: usando il plugin WPML, l’opzione “Genera automaticamente hreflang autoriferito” non è selezionata.
- Conseguenza: i tag generati includono solo link alle versioni in altre lingue, mancando la dichiarazione della pagina corrente.
Errore 3: pagina dinamica con tag incompleti
- Esempio di scenario: in pagine basate su JavaScript (come framework React/Vue), il tag hreflang non viene correttamente inserito nel
<head>
. - Conseguenza: i crawler dei motori di ricerca potrebbero non riconoscere il tag autoriferito generato dinamicamente.
Strumenti e metodi di verifica
Passo 1: controllo manuale del codice sorgente
- Premere
Ctrl+U
per vedere il codice sorgente della pagina, cercare hreflang="xx"
e verificare se esiste un tag che punta all’URL corrente (nota: xx
è il codice lingua della pagina attuale).
Passo 2: verifica con Google Search Console
- Nello “Strumento di controllo URL”, inserire l’URL della pagina e controllare il report “Target internazionale” — se segnala “Tag hreflang autoriferito non rilevato” allora c’è il problema.
Passo 3: strumento Hreflang Validator
- Inserire l’URL della pagina; lo strumento elencherà tutti i link hreflang associati, evidenziando in rosso la mancanza del tag autoriferito.
Soluzioni e passi pratici
Correzione in CMS (esempio WordPress):
Configurazione plugin:
- Se si usa Yoast SEO: attivare “Aggiungi hreflang autoriferito” nelle impostazioni avanzate.
- Se si usa WPML: andare in “Impostazioni lingua” → “Opzioni SEO” e spuntare “Includi link a se stesso”.
Correzione manuale (siti statici o codice personalizzato):
Aggiungere questo codice nella sezione <head>
della pagina (esempio per pagina in francese):
Correzione delle pagine a rendering dinamico (come React):
Nella logica di rendering lato server (SSR), il tag di autoreferenziazione viene generato dinamicamente in base alla lingua corrente della pagina:
Principio di collegamento circolare e necessità
La regola principale di hreflang è che tutte le pagine correlate devono puntarsi reciprocamente, formando un ciclo completo. Ad esempio:
- La pagina tedesca (
de
) deve puntare alle versioni in inglese (en
), francese (fr
) e altre lingue; - Le pagine in inglese e francese devono anche puntare indietro alla pagina tedesca.
Necessità:
- Trasferimento di autorità: Il collegamento circolare aiuta i motori di ricerca a capire che le pagine multilingue sono equivalenti, evitando dispersione di autorità.
- Prevenzione dei contenuti duplicati: Se c’è un collegamento unilaterale (ad esempio, la pagina inglese punta a quella tedesca, ma quella tedesca non punta a quella inglese), i motori possono considerare le pagine contenuti separati e penalizzarli per duplicazione.
Eccezioni:
- Le pagine in una sola lingua (ad esempio solo inglese) non necessitano di collegamento circolare, ma devono avere autoreferenziazione.
- Le varianti regionali (come
en-US
e en-GB
) devono puntarsi reciprocamente, ma non è necessario collegarle ad altre lingue.
Scenari comuni di rottura del collegamento e conseguenze
Scenario 1: Aggiunta di nuove versioni linguistiche senza aggiornare le pagine vecchie
- Esempio: Un sito di notizie ha aggiunto una pagina giapponese (
ja
), ma le pagine originali in inglese e cinese non hanno aggiunto link hreflang verso la pagina giapponese. - Conseguenza: La pagina giapponese diventa una “pagina isolata” e i motori di ricerca indicizzano solo le altre pagine collegate.
Scenario 2: Difetto nella logica del plugin CMS
- Esempio: Plugin multilanguage di WordPress (come Polylang) durante la generazione di massa delle pagine non aggiungono automaticamente link per le nuove lingue nei contenuti vecchi.
- Conseguenza: Alcune pagine perdono il collegamento e gli utenti non riescono a passare alla nuova versione linguistica dai contenuti vecchi.
Scenario 3: Parametri dinamici che causano fallimenti nel collegamento
- Esempio: La URL della pagina spagnola contiene parametri (ad esempio
?lang=es
), ma le altre pagine non li includono negli hreflang. - Conseguenza: I motori di ricerca considerano la pagina con parametro
es
come contenuto non correlato alle altre versioni linguistiche.
Strumenti di controllo e metodi di verifica
Strumento 1: Screaming Frog
- Nel risultato della scansione, vai alla scheda “Hreflang” e filtra per “Missing Reciprocal Links” (link reciproci mancanti).
- Azione: Esporta la lista degli errori per localizzare i gruppi di URL senza collegamento circolare.
Strumento 2: Sitebulb
- Nel rapporto “Audit SEO Internazionale”, controlla l’avviso “Unreciprocated hreflang links” che mostra pagine interrotte e lingue mancanti.
Strumento 3: DeepCrawl
- Configura regole personalizzate per monitorare i collegamenti tra pagine multilingue e ricevere rapporti settimanali automatici su problemi di link interrotti.
Soluzioni e passaggi pratici
Soluzione 1: Correzione in massa tramite plugin CMS (esempio Shopify)
Entra nelle impostazioni del plugin multilingue (come Langify) e attiva l’opzione “Associa automaticamente tutte le versioni linguistiche”.
Nelle “Impostazioni del template”, assicurati che la logica del tag hreflang includa un ciclo che attraversi tutte le versioni linguistiche:
Soluzione 2: Correzione manuale del codice (sito statico)
Crea un elenco di associazioni per ogni versione linguistica (ad esempio un file Excel), elencando tutti i gruppi di URL che devono essere collegati tra loro.
Aggiungi i tag nella pagina secondo l’elenco, ad esempio:
Sincronizza anche i tag hreflang nelle pagine in tedesco e francese per assicurarti che contengano i link alla pagina in inglese.
Soluzione 3: Automazione lato server (ad esempio Nginx)
Genera dinamicamente i tag hreflang tramite proxy inverso e regole di mapping:
Conflitti con i tag Canonical
Ad esempio, se la pagina di un prodotto in tedesco ha un tag Canonical che punta alla pagina principale in inglese, i motori di ricerca considereranno la pagina tedesca come una copia di quella inglese e non la mostreranno agli utenti di lingua tedesca.
Il problema più comune è che molti sistemi CMS impostano per default tutte le versioni linguistiche con Canonical che punta alla pagina principale della lingua principale (ad esempio x-default
), impedendo così che le altre pagine linguistiche vengano indicizzate separatamente.
Principio di conflitto e regole di priorità
Ordine di priorità seguito dai motori di ricerca nel trattare i tag hreflang e Canonical:
Canonical ha priorità: se la pagina A ha un Canonical che punta alla pagina B, i motori di ricerca considereranno A come una copia di B, anche se A ha una dichiarazione hreflang, questa verrà ignorata.
Situazioni in cui hreflang non funziona:
- La pagina in francese ha un Canonical che punta alla pagina in inglese → la pagina in francese non verrà mostrata agli utenti francesi.
- Le pagine multilingua hanno un Canonical unificato che punta alla pagina principale → tutte le versioni linguistiche sono considerate contenuti duplicati.
Regola di eccezione:
- Se il tag Canonical punta a se stesso (cioè
<link rel="canonical" href="URL della pagina corrente"/>
), hreflang funzionerà correttamente.
Scenari tipici di errore e conseguenze
Errore 1: Conflitto nella configurazione predefinita dei plugin multilingua
- Esempio: Il plugin Yoast SEO di WordPress per impostazione predefinita fa sì che il tag Canonical delle pagine multilingua punti alla pagina nella lingua principale. Ad esempio, la pagina in tedesco avrà il tag Canonical così:
<link rel="canonical" href="https://example.com/en/page"/>
. - Conseguenza: La pagina in tedesco viene considerata una copia della pagina in inglese, quindi non appare nei risultati di ricerca in tedesco, causando una perdita di traffico superiore al 50%.
Errore 2: Interferenza dei parametri dinamici
- Esempio: URL con parametri (come
example.com/page?lang=de
) hanno il Canonical che punta alla versione senza parametri (example.com/page
), ma quest’ultima non è configurata con hreflang. - Conseguenza: La pagina in tedesco con parametri non viene indicizzata, e gli utenti vedono solo la pagina nella lingua predefinita durante la ricerca.
Errore 3: Varianti regionali non dichiarate separatamente
- Esempio: La pagina
en-US
ha il Canonical che punta alla pagina inglese generale (en
), facendo sì che i motori di ricerca considerino la pagina in inglese americano senza valore indipendente. - Conseguenza: Gli utenti negli USA possono essere indirizzati alla pagina
en
(es. inglese britannico), riducendo l’esperienza localizzata.
Strumenti di rilevamento e metodi di diagnostica
Strumento 1: Google Search Console
- Accedi al rapporto “Copertura”, filtra nella scheda “Esclusi” per “Pagine duplicate” o “Inviate ma non indicizzate” e verifica se ci sono fallimenti di hreflang causati da conflitti di Canonical.
Strumento 2: Screaming Frog
- Dopo aver eseguito la scansione del sito, filtra le pagine che contengono sia hreflang che Canonical e verifica se il Canonical punta a un’altra pagina (non a sé stessa).
- Esporta i dati e filtra con la condizione:
Canonical != Self-URL
.
Strumento 3: DeepCrawl
- Imposta regole di avviso personalizzate: attiva un avviso quando hreflang e destinazione Canonical non corrispondono.
Soluzioni e passaggi pratici
Soluzione 1: Correzione tramite plugin CMS (esempio Yoast SEO)
- Vai nelle impostazioni multilingua e disattiva l’opzione “Canonical unificato che punta alla lingua principale”.
- In “Impostazioni avanzate”, abilita “Genera tag Canonical indipendenti per ogni versione linguistica”.
Soluzione 2: Correzione manuale del codice
Nella sezione <head>
, assicurati che il tag Canonical punti al proprio URL, ad esempio:
Soluzione 3: Configurazione lato server (es. Nginx)
Genera dinamicamente il tag Canonical corrispondente alla versione linguistica corrente:
Ad esempio, pagine generate dinamicamente che non caricano l’HTML completo a causa del timeout del server, causando la mancanza del tag hreflang nel <head>
;
oppure pagine mobili che restituiscono un redirect temporaneo 302 anziché il codice 200, per cui i motori di ricerca potrebbero ignorare i tag;
alcune regole CDN o firewall bloccano le richieste dei crawler, impedendo la lettura delle pagine in determinate lingue regionali.
L’uso eccessivo di parametri dinamici (es. ?utm_source=ads
o ?sessionid=123
) negli URL è un “nemico nascosto” che causa problemi di contenuti duplicati nei siti multilingue.
Ad esempio, una pagina in spagnolo può generare più URL con parametri diversi (es. /es/page?ref=facebook
e /es/page?ref=email
), che i motori di ricerca interpretano come pagine distinte, causando duplicazione dei contenuti.
Usa solo URL senza parametri in hreflang (es. /de/page
).
Aggiungi tag canonical per le URL con parametri che puntano alla versione senza parametri: