Vai al contenuto principale

Hreflang vs Canonical: come funzionano insieme nella SEO internazionale

Comprendi la relazione tra hreflang e tag canonical. Scopri quando entrano in conflitto e come evitare errori.

Hreflang Generator Team

Che cos'è un tag Canonical?

Prima di esaminare come hreflang e canonical interagiscono, vale la pena stabilire cosa fa ciascuno in modo indipendente.

Un tag canonical (<link rel="canonical">) comunica ai motori di ricerca quale URL è la versione preferita di una pagina ai fini dell'indicizzazione. Quando più URL servono contenuti identici o molto simili, il tag canonical consolida i segnali di posizionamento su un'unica URL, prevenendo la diluizione causata dal contenuto duplicato.

<link rel="canonical" href="https://example.com/en/products/widget/" />

Ad esempio, se la tua pagina prodotto è accessibile sia all'indirizzo https://example.com/en/products/widget/ che all'indirizzo https://example.com/en/products/widget/?ref=newsletter, il tag canonical su entrambi gli URL dovrebbe puntare alla versione pulita senza il parametro di query. Questo dice a Google: "Tratta queste come la stessa pagina e consolida la loro forza di posizionamento."

I tag canonical sono un segnale forte che Google generalmente rispetta (sebbene non sia una direttiva -- Google potrebbe sovrascrivere il tuo canonical se rileva inconsistenze).

Che cos'è Hreflang?

Hreflang (<link rel="alternate" hreflang="...">) comunica ai motori di ricerca che una pagina ha versioni equivalenti in altre lingue o regioni. Non controlla l'indicizzazione -- controlla quale versione appare nei risultati di ricerca in base alla lingua e alla posizione dell'utente.

<link rel="alternate" hreflang="en" href="https://example.com/en/products/widget/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/produkte/widget/" />
<link rel="alternate" hreflang="es" href="https://example.com/es/productos/widget/" />

Hreflang dice: "Queste tre pagine sono lo stesso contenuto per pubblici diversi." Non dice nulla su quale URL debba essere indicizzata.

Come Hreflang e Canonical funzionano insieme

È qui che nasce la maggior parte della confusione. Hreflang e canonical servono a scopi complementari ma diversi:

| Segnale | Scopo | Ambito | |---------|-------|--------| | Canonical | "Questo è l'URL preferito per l'indicizzazione" | All'interno di una singola versione linguistica | | Hreflang | "Queste sono le varianti di lingua/regione" | Tra le versioni linguistiche |

La regola fondamentale è: ogni versione localizzata deve avere un canonical autoreferenziale che punta a sé stessa. Il canonical della pagina inglese punta all'URL inglese. Il canonical della pagina tedesca punta all'URL tedesco. Il canonical della pagina spagnola punta all'URL spagnolo.

Ecco l'implementazione corretta per una pagina disponibile in tre lingue:

Pagina inglese a https://example.com/en/products/widget/:

<link rel="canonical" href="https://example.com/en/products/widget/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/products/widget/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/produkte/widget/" />
<link rel="alternate" hreflang="es" href="https://example.com/es/productos/widget/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/products/widget/" />

Pagina tedesca a https://example.com/de/produkte/widget/:

<link rel="canonical" href="https://example.com/de/produkte/widget/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/products/widget/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/produkte/widget/" />
<link rel="alternate" hreflang="es" href="https://example.com/es/productos/widget/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/products/widget/" />

Pagina spagnola a https://example.com/es/productos/widget/:

<link rel="canonical" href="https://example.com/es/productos/widget/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/products/widget/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/produkte/widget/" />
<link rel="alternate" hreflang="es" href="https://example.com/es/productos/widget/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/products/widget/" />

Nota lo schema: il canonical è sempre autoreferenziale, mentre il set hreflang è identico su tutte e tre le pagine (garantendo piena reciprocità).

Quando Hreflang e Canonical entrano in conflitto

I conflitti si verificano quando il tag canonical di una pagina punta a un URL in una lingua diversa. Questo è l'errore più dannoso nell'implementazione dei tag di SEO internazionale.

L'errore del Canonical tra lingue diverse

Considera questa implementazione errata:

Pagina tedesca a https://example.com/de/produkte/widget/:

<!-- ERRATO: il canonical punta alla versione inglese -->
<link rel="canonical" href="https://example.com/en/products/widget/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/produkte/widget/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/products/widget/" />

Questo dice a Google: "La pagina tedesca è un duplicato della pagina inglese. Per favore, indicizza solo l'URL inglese." Google allora deindicizzerà la pagina tedesca e mostrerà l'URL inglese agli utenti tedeschi. L'hreflang viene ignorato perché il canonical ha effettivamente dichiarato inesistente la pagina tedesca dal punto di vista dell'indicizzazione.

Questo errore è sorprendentemente comune e spesso deriva da:

Come Google gestisce il conflitto

Quando Google incontra un canonical tra lingue diverse con hreflang:

  1. Il segnale canonical prevale perché è un segnale più forte dell'hreflang
  2. Google consolida l'indicizzazione sull'URL canonico (la pagina inglese)
  3. La pagina tedesca scompare effettivamente dall'indice di Google
  4. Gli utenti tedeschi che cercano in tedesco vedono la pagina inglese nei risultati (o nessun risultato se la pagina inglese non si posiziona per query in tedesco)
  5. Tutta l'autorità di posizionamento dai backlink verso la pagina tedesca confluisce nella pagina inglese, che comunque non può posizionarsi nei risultati di ricerca tedeschi

Il risultato: perdi completamente la tua presenza nelle ricerche in tedesco.

Schemi di utilizzo corretti

Schema 1: Canonical autoreferenziale per versione linguistica

Ogni pagina localizzata ha un canonical che punta a sé stessa. Questo è lo schema corretto per la grande maggioranza dei siti internazionali.

/en/page/ -> canonical: /en/page/
/de/page/ -> canonical: /de/page/
/es/page/ -> canonical: /es/page/

Tutte e tre le pagine condividono lo stesso set hreflang completo. Ogni pagina è indicizzata in modo indipendente e si posiziona nel proprio mercato di riferimento.

Schema 2: URL parametrizzati con Canonical diverso

Se il tuo sito utilizza parametri di query per la selezione della lingua (ad esempio, ?lang=de), ogni versione linguistica dovrebbe comunque avere un canonical che punta a un URL pulito -- ma un URL pulito nella propria lingua.

/page/?lang=en -> canonical: /page/?lang=en (oppure /en/page/ se hai URL puliti)
/page/?lang=de -> canonical: /page/?lang=de (oppure /de/page/ se hai URL puliti)

Non canonicalizzare mai tutti i parametri di lingua verso l'URL base senza parametro. Questo collasserebbe tutte le lingue in un singolo URL indicizzato.

Schema 3: Pagine che sono genuinamente duplicati all'interno di una lingua

A volte hai veri duplicati all'interno della stessa lingua -- ad esempio, una pagina prodotto accessibile da due percorsi di categoria diversi. In questo caso, il canonical punta correttamente a un URL, e l'hreflang su quell'URL canonico punta ai suoi corrispettivi in altre lingue.

/en/category-a/widget/ -> canonical: /en/products/widget/
/en/category-b/widget/ -> canonical: /en/products/widget/
/en/products/widget/   -> canonical: /en/products/widget/ (autoreferenziale)
                          hreflang: /en/products/widget/, /de/produkte/widget/, /es/productos/widget/

L'hreflang deve esistere solo sull'URL canonico. Le pagine duplicate all'interno della stessa lingua non necessitano di hreflang perché Google le consoliderà comunque sull'URL canonico.

Diagnosticare i conflitti

Se sospetti conflitti tra hreflang e canonical sul tuo sito, cerca questi sintomi:

Per effettuare un audit del tuo sito:

  1. Esegui il crawl del tuo sito con uno strumento che estragga sia i tag canonical che quelli hreflang
  2. Per ogni pagina, verifica che rel="canonical" punti allo stesso dominio e percorso linguistico della pagina stessa
  3. Verifica che ogni URL in ogni set hreflang abbia anche un canonical autoreferenziale
  4. Controlla che nessun tag canonical punti a un URL in una directory linguistica diversa

Conclusione

Hreflang e canonical non sono in competizione. Risolvono problemi diversi e devono essere sempre in accordo. La regola è semplice:

Quando questi due segnali sono allineati, i motori di ricerca possono indicizzare con sicurezza ogni versione localizzata in modo indipendente e mostrare la versione giusta al pubblico giusto. Quando entrano in conflitto, il canonical prevale e l'hreflang viene ignorato, il che tipicamente distrugge la tua visibilità nelle ricerche internazionali.

Usa il nostro Generatore di tag Hreflang per costruire set di tag che seguano automaticamente questi schemi corretti. Il generatore garantisce canonical autoreferenziali e piena reciprocità tra tutte le versioni linguistiche del set.

Related tools