Kamaankamaan

Tag hreflang spiegati: il modo giusto di configurarli per un blog

Hreflang è un segnale di relazione, non un segnale di ranking. Questa guida mostra dove può vivere hreflang (HTML head, sitemap XML, header HTTP), i cinque errori che uccidono i ranking e cosa Kamaan emette automaticamen

Junaid Khalid
Junaid Khalid
28 maggio 2026 · 12 min read

La vostra implementazione hreflang è probabilmente rotta. L'errore di solito non emerge nella vostra dashboard di traffico. Emerge mesi dopo, quando la versione spagnola di un articolo si posiziona al numero 4 in Spagna, la versione tedesca non appare affatto in Germania e la versione francese in qualche modo si posiziona per query in inglese in Canada. La soluzione è raramente una modifica di codice. È quasi sempre un fraintendimento strutturale di cosa sia hreflang, dove va e quale regola di validazione si è rotta.

Questa guida vi mostra i tre posti in cui hreflang può vivere (HTML head, sitemap XML, header HTTP), le regole che Google applica davvero, i cinque errori che causano la maggior parte dei fallimenti di ranking e cosa Auto-Multilingual Delivery di Kamaan emette automaticamente perché non dobbiate pensare a niente di tutto questo.

In sintesi

  • Hreflang è un segnale di relazione, non un segnale di ranking. Dice a Google quale versione mostrare in quale mercato. Non vi fa salire nella SERP.
  • Esistono tre metodi di implementazione: tag link HTML in <head>, annotazioni xhtml:link nel sitemap XML e header HTTP Link. Sceglietene uno e attenetevi. Mescolarli è la fonte più comune di errori di validazione.
  • Ogni annotazione hreflang deve essere reciproca. Pagina A punta a Pagina B, Pagina B punta a Pagina A. Mancate questo e Google ignora entrambe le annotazioni in silenzio.
  • Il valore x-default dice a Google cosa servire quando nessuna versione di lingua corrisponde. Senza di esso, Google indovina.
  • Gli URL hreflang devono restituire HTTP 200. Un redirect 301 o un 404 rompe l'intero cluster di annotazioni, non solo la pagina rotta.

Miniatura blog Kamaan: 'Hreflang for Blogs' con sottotitolo 'Il modo giusto di configurare hreflang perché Google posizioni ogni versione di lingua del vostro blog.'

Cosa fa davvero hreflang (e cosa non fa)

Hreflang è un tag che dice ai motori di ricerca: "questa pagina esiste in un'altra lingua o regione a questo URL." Questo è l'intero ambito. Non dice a Google che una pagina è più importante. Non aumenta i ranking. Non sostituisce un sitemap. Non sostituisce contenuto tradotto.

Cosa fa hreflang è risolvere un problema specifico: quando Google ha effettuato il crawl di cinque versioni di lingua dello stesso articolo, quale dovrebbe mostrare per una ricerca a Madrid versus Berlino versus Lione? Senza hreflang, Google indovina basandosi su segnali come la lingua del contenuto della pagina, l'IP dell'utente e il TLD del dominio. Con hreflang, Google ha una mappa definitiva.

Il meccanismo è una dichiarazione di relazione. Ogni pagina in un cluster di lingue fa riferimento a ogni altra pagina del cluster, inclusa sé stessa. Se il vostro blog ha versioni in inglese, spagnolo, tedesco, francese e italiano di un articolo, ognuna di quelle cinque pagine dichiara tutti e cinque gli URL con i loro codici di lingua.

Il formato è preciso. I codici di lingua seguono ISO 639-1 (due lettere, minuscole): en, es, de, fr, it. I codici di regione sono opzionali e seguono ISO 3166-1 Alpha 2 (due lettere, maiuscole): en-US, en-GB, es-MX, es-ES. Li combinate con un trattino: en-US, de-AT, fr-CA. Non c'è supporto per codici di tre lettere. Non c'è separatore underscore. Non c'è annidamento.

I tre metodi di implementazione a confronto

Potete mettere annotazioni hreflang in uno di tre posti. La scelta giusta dipende da quante lingue servite e se controllate la risposta del server.

Il grafico sotto mappa i compromessi di ogni approccio perché scegliate quello giusto per il vostro blog.

Metodi di implementazione hreflang confrontati: tag HTML link in head (semplice, il peso della pagina cresce), sitemap XML xhtml:link (centralizzato, peso HTML zero) e header HTTP Link (più puliti per non-HTML)

Metodo Dove vive Adatto per Cosa lo rompe
Tag HTML <link> In <head> di ogni pagina Siti con 5 lingue o meno Il peso della pagina cresce con ogni lingua. Facile dimenticarne una.
Sitemap XML In xhtml:link dentro ogni <url> Siti con 6+ lingue, 100+ pagine Disciplina sitemap richiesta. Latenza di re-crawl.
Header HTTP Link Negli header di risposta del server File non-HTML (PDF, JSON, immagini) Config server richiesta. I layer CDN rimuovono header.

I tag HTML <link> stanno nel <head> di ogni pagina del cluster:

<link rel="alternate" hreflang="en" href="https://example.com/blog/article" />
<link rel="alternate" hreflang="es" href="https://example.com/es/blog/article" />
<link rel="alternate" hreflang="de" href="https://example.com/de/blog/article" />
<link rel="alternate" hreflang="x-default" href="https://example.com/blog/article" />

Facili da ispezionare con Visualizza sorgente. Lo svantaggio emerge oltre le cinque lingue: il peso HTML sale con ogni aggiunta.

Le annotazioni sitemap XML spostano la mappa hreflang nel sitemap come elementi xhtml:link dentro ogni <url>:

<url>
  <loc>https://example.com/blog/article</loc>
  <xhtml:link rel="alternate" hreflang="en" href="https://example.com/blog/article" />
  <xhtml:link rel="alternate" hreflang="es" href="https://example.com/es/blog/article" />
</url>

Scelta giusta oltre le cinque lingue o le cento pagine. Centralizzato, auditabile, HTML pulito. Il costo è la latenza di re-crawl.

Gli header HTTP Link sono la scelta giusta solo per file non-HTML (PDF, endpoint JSON). Il server emette un header Link. Richiede config server ed è fragile attraverso i layer CDN che rimuovono header personalizzati. Non usateli per pagine HTML quando esiste un'alternativa.

I cinque errori che uccidono i ranking

La maggior parte dei fallimenti hreflang ricade in una di cinque categorie. Ognuno è riparabile in meno di un'ora una volta che sapete cosa cercare.

Errore uno: tag di ritorno mancanti. Ogni dichiarazione hreflang deve essere reciproca. Se il vostro articolo inglese dichiara la versione spagnola a /es/blog/article, l'articolo spagnolo deve dichiarare la versione inglese a /blog/article. Se manca una delle due direzioni, Google chiama questo errore "no return tag" in Search Console e ignora entrambe le annotazioni. È la regola di validazione più fallita nella SEO internazionale, e di solito emerge mesi dopo un rollout di traduzioni parziale, quando una versione di lingua è stata pubblicata e le altre dimenticate.

Errore due: codici di lingua o regione errati. I codici sono precisi e implacabili. Usate uk per ucraino, mai ua. Usate zh-Hans per cinese semplificato, non zh-CN. I codici di tre lettere non funzionano. Un fallimento silenzioso comune: scrivere en-UK invece di en-GB (il Regno Unito è GB in ISO 3166-1, non UK).

Errore tre: x-default mancante. Il valore x-default dice ai motori di ricerca quale pagina servire quando nessuna versione di lingua corrisponde all'utente. Senza di esso, Google decide da solo, di solito servendo la versione che ha crawlato di più. Includete sempre un x-default che punta alla vostra versione principale. Per un blog la cui lingua principale è l'inglese, fissate x-default all'URL inglese.

Errore quattro: hreflang che punta a URL non-200. Ogni URL del vostro cluster di annotazioni deve restituire HTTP 200. Un redirect 301, un 404 o un 500 rompe l'intero set di annotazioni. Se reindirizzate /de/blog/old-slug a /de/blog/new-slug, il vostro hreflang deve puntare al nuovo slug, non al redirect. Se la traduzione tedesca non esiste ancora, non dichiarate hreflang per il tedesco. Un puntatore rotto è peggio di uno mancante.

Errore cinque: conflitto con il tag canonical. Se la vostra pagina spagnola ha hreflang verso https://example.com/es/blog/article ma quella pagina ha un <link rel="canonical"> che punta all'URL inglese, Google segue il canonical e ignora hreflang. Ogni pagina di un cluster hreflang deve auto-canonicalizzarsi. La pagina spagnola canonicalizza a sé stessa. La pagina tedesca canonicalizza a sé stessa. I canonical inter-lingua annullano hreflang in silenzio.

Come verificare la vostra implementazione

Tre controlli coprono la maggior parte delle modalità di fallimento.

Usate Google Search Console. Andate a Strumenti e report legacy, poi a Targeting internazionale. Il report "No return tags" elenca ogni pagina dove la reciprocità si è rotta. Il report "Unknown language code" elenca ogni codice non valido. Questi due report fanno emergere la maggior parte degli errori hreflang reali.

Crawllate con uno strumento. Screaming Frog, Sitebulb o Ahrefs Site Audit validano i cluster hreflang su larga scala. Crawllate il vostro sito completo, filtrate per errori hreflang e vedrete ogni cluster con tag di ritorno mancante, codice errato o target non-200. Un controllo a campione su cinque articoli non basta. Un blog multilingue ha tipicamente centinaia di cluster.

Testate header e tag direttamente. curl -I https://example.com/blog/article mostra gli header di risposta, inclusi eventuali header Link. Visualizza sorgente sulla pagina mostra i tag <link>. Il sitemap XML è a un URL di distanza. Se non trovate il vostro hreflang in nessuno di quei tre posti, non avete hreflang implementato, indipendentemente da cosa dice la dashboard del vostro CMS.

Cosa Kamaan emette automaticamente

La distribuzione multilingue automatica di Kamaan gestisce l'implementazione hreflang per voi. Quando pubblicate un articolo in inglese, Kamaan crea automaticamente le versioni in spagnolo, tedesco, francese e italiano, dà a ciascuna uno slug localizzato ed emette il set completo di annotazioni hreflang reciproche su ogni versione. I default sono corretti out of the box.

Concretamente, Kamaan emette tag HTML <link> nel <head> di ogni pagina del blog, con il set completo di alternative di lingua, incluso x-default che punta alla versione inglese. Gli URL tradotti seguono il pattern /{lang}/blog/{slug} (prefisso lingua prima di blog), che corrisponde alla raccomandazione di Google per siti multilingue basati su sottocartelle. Ogni URL si auto-canonicalizza. La reciprocità è garantita perché la stessa azione di pubblicazione crea tutte e cinque le versioni in una transazione.

Per blog più grandi con molte lingue, Kamaan emette anche la mappa hreflang nel sitemap XML come annotazioni xhtml:link. Ottenete entrambi i metodi gratis, che è la ridondanza che la documentazione di Google raccomanda per blog che operano su larga scala.

Il punto non è che Kamaan faccia qualcosa che nessun altro può fare. Il punto è che smettete di spendere tempo di ingegneria su hreflang. Auto-Multilingual Delivery pubblica versioni in spagnolo, tedesco, francese e italiano di ogni articolo nel momento in cui premete pubblica in inglese, con hreflang valido su ognuna, e zero passi extra.

Una checklist di configurazione pratica

Prima di pubblicare un blog multilingue, scorrete questa lista una volta. Poi automatizzatela (o usate un CMS che la gestisce per voi).

  1. Scegliete un metodo di implementazione. Tag HTML per 5 lingue o meno. Sitemap XML per 6 o più. Header HTTP solo per non-HTML.
  2. Confermate che ogni pagina in ogni lingua abbia un'annotazione x-default che punta alla versione di lingua principale.
  3. Confermate la reciprocità. Ogni pagina del cluster fa riferimento a ogni altra pagina, inclusa sé stessa.
  4. Confermate che ogni URL in ogni annotazione restituisca HTTP 200 (niente redirect, niente 404).
  5. Confermate che ogni pagina del cluster abbia un canonical auto-referenziato, non un canonical inter-lingua.
  6. Inviate il sitemap (o aspettate il re-crawl).
  7. Verificate Targeting internazionale di Search Console dopo 7-14 giorni per errori di tag di ritorno.

Se un passo di questa lista è automatizzato dal vostro CMS, avete una cosa in meno da rompere. Se il vostro CMS non fa nessuna di queste cose, lo fate manualmente e prima o poi sbaglierete uno.

Scenari del mondo reale

Un fondatore che gestisce uno strumento SaaS di fatturazione B2B pubblica un articolo sulla sua nuova funzionalità di fatturazione ricorrente. In dieci minuti, Kamaan ha pubblicato automaticamente le versioni in spagnolo, tedesco, francese e italiano a /es/blog/, /de/blog/, /fr/blog/ e /it/blog/, ognuna con il blocco hreflang reciproco completo emesso in HTML <head> e riflesso nel sitemap XML. Il report Targeting internazionale di Google Search Console mostra zero errori "no return tag". Il fondatore non ha scritto una riga di configurazione hreflang.

Uno sviluppatore solitario aveva un blog Next.js con hreflang manuale in <head> per tre lingue. Aggiungere una quarta lingua ha rotto la reciprocità sul 60 per cento dei vecchi articoli perché il nuovo tag è stato aggiunto solo ai nuovi post. La migrazione a Kamaan ha gestito anche gli articoli storici: la pubblicazione successiva ha attivato una re-emissione completa della mappa hreflang per ogni articolo pubblicato in ogni lingua. Il conteggio degli errori in Search Console è sceso da 412 a 0 in un ciclo di re-crawl.

FAQ

Mi serve hreflang se ho solo una lingua?

No. Hreflang è un segnale di relazione tra varianti di lingua o regione. Con una sola lingua, non c'è niente da relazionare. Saltatelo.

I tag hreflang aiutano la SEO direttamente?

No, non nel senso del ranking. Hreflang non vi fa salire nella SERP. Quello che fa è garantire che la versione giusta della vostra pagina si posizioni nel mercato giusto. Questo può tradursi in guadagni di traffico, ma è un miglioramento di routing, non un boost di ranking.

Posso usare hreflang su una single-page app con routing lato client?

Sì, ma con riserve. L'annotazione hreflang deve essere nella risposta HTML iniziale, non iniettata dopo l'esecuzione di JavaScript. Googlebot legge la risposta iniziale. Se i vostri tag <link rel="alternate"> appaiono solo dopo l'hydration lato client, Google non li vedrà. Server-rendete l'head o usate il metodo sitemap.

Qual è la differenza tra x-default e en?

x-default è un fallback per quando nessuna lingua corrisponde all'utente. en punta specificamente ai ricercatori anglofoni. Vi servono entrambi. x-default non sostituisce en, e en non sostituisce x-default.

Quanto tempo serve perché le modifiche hreflang abbiano effetto?

Google deve fare il re-crawl di ogni pagina del cluster, cosa che può richiedere giorni o settimane a seconda del vostro crawl budget. Il report Targeting internazionale di Search Console si aggiorna secondo un proprio calendario e può ritardare di 7-14 giorni anche dopo che Google ha fatto il re-crawl.

Perché il mio hreflang basato su sitemap funziona ma il mio hreflang HTML no?

Due cause comuni. O i tag HTML vengono iniettati lato client dopo che Googlebot ha finito di leggere la pagina, o avete un conflitto canonical in cui la pagina ha hreflang verso un URL ma canonicalizza a un altro. Verificate entrambi.

Da leggere anche su Kamaan

Inizia con Kamaan

Hreflang valido a ogni pubblicazione, zero config

Kamaan vi dà una dashboard per tutti i blog dei vostri prodotti, auto-tradotti in 99+ lingue a ogni pubblicazione. Un account copre siti illimitati a prezzo fisso. L'MCP Server vi permette di pubblicare da Claude o ChatGPT. Primo mese gratis.

Inizia gratis su kamaan.io

Frequently asked

FAQ · 6 ITEMS
Mi serve hreflang se ho solo una lingua?

No. Hreflang è un segnale di relazione tra varianti di lingua o regione. Con una sola lingua, non c'è niente da relazionare. Saltatelo.

I tag hreflang aiutano la SEO direttamente?

No, non nel senso del ranking. Hreflang non vi fa salire nella SERP. Quello che fa è garantire che la versione giusta della vostra pagina si posizioni nel mercato giusto. Questo può tradursi in guadagni di traffico, ma è un miglioramento di routing, non un boost di ranking.

Posso usare hreflang su una single-page app con routing lato client?

Sì, ma con riserve. L'annotazione hreflang deve essere nella risposta HTML iniziale, non iniettata dopo l'esecuzione di JavaScript. Googlebot legge la risposta iniziale. Se i vostri tag `<link rel="alternate">` appaiono solo dopo l'hydration lato client, Google non li vedrà. Server-rendete l'head o usate il metodo sitemap.

Qual è la differenza tra `x-default` e `en`?

`x-default` è un fallback per quando nessuna lingua corrisponde all'utente. `en` punta specificamente ai ricercatori anglofoni. Vi servono entrambi. `x-default` non sostituisce `en`, e `en` non sostituisce `x-default`.

Quanto tempo serve perché le modifiche hreflang abbiano effetto?

Google deve fare il re-crawl di ogni pagina del cluster, cosa che può richiedere giorni o settimane a seconda del vostro crawl budget. Il report Targeting internazionale di Search Console si aggiorna secondo un proprio calendario e può ritardare di 7-14 giorni anche dopo che Google ha fatto il re-crawl.

Perché il mio hreflang basato su sitemap funziona ma il mio hreflang HTML no?

Due cause comuni. O i tag HTML vengono iniettati lato client dopo che Googlebot ha finito di leggere la pagina, o avete un conflitto canonical in cui la pagina ha hreflang verso un URL ma canonicalizza a un altro. Verificate entrambi.

Junaid Khalid
Written by
Junaid Khalid

Junaid Khalid is the founder of Kamaan, a headless blog CMS that auto-publishes in five languages and lets you manage every product blog from one dashboard.