Canonical per siti multilingua

Sui siti multilingua ogni versione linguistica di una pagina deve avere un canonical autoreferenziale (che punta a se stessa). Questo preserva l'indicizzazione di tutte le varianti, mentre la relazione tra loro è gestita da hreflang. Puntare il canonical a un'altra lingua è un errore che può portare alla deindicizzazione.

Canonical autoreferenziale per le versioni linguistiche

Quando usi hreflang per indicare le alternative linguistiche e regionali, è fondamentale che ogni versione della pagina abbia un canonical che punta a se stessa. Cioè: su https://example.com/en/page devi avere <link rel="canonical" href="https://example.com/en/page" />, e sulla versione russa vale lo stesso principio. Questo dice a Google che ogni versione linguistica è la versione canonical (principale) per la sua lingua.

Non puntare mai il canonical da una pagina russa a una inglese (o viceversa) solo perché «l'inglese è l'originale». La versione russa uscirebbe dall'indice.

Esempio di implementazione corretta

html
<!-- On https://example.com/en/page -->
<link rel="canonical" href="https://example.com/en/page" />
<link rel="alternate" hreflang="en" href="https://example.com/en/page" />
<link rel="alternate" hreflang="ru" href="https://example.com/ru/page" />

<!-- On https://example.com/ru/page -->
<link rel="canonical" href="https://example.com/ru/page" />
<link rel="alternate" hreflang="en" href="https://example.com/en/page" />
<link rel="alternate" hreflang="ru" href="https://example.com/ru/page" />

Nota: il canonical punta alla stessa pagina in cui si trova. hreflang collega le due versioni tra loro.

Cosa non fare

html
<!-- ERROR: Russian version points to English -->
<!-- On https://example.com/ru/page -->
<link rel="canonical" href="https://example.com/en/page" />
<link rel="alternate" hreflang="en" href="https://example.com/en/page" />
<link rel="alternate" hreflang="ru" href="https://example.com/ru/page" />

Con questa configurazione Google tratterà la pagina russa come un semplice duplicato di quella inglese. Risultato: la versione russa verrà deindicizzata e perderai tutto il traffico dal segmento di lingua russa.

Eccezioni

Sono poche le situazioni in cui puntare il canonical a un'altra versione linguistica è accettabile:

  • Contenuto del tutto identico (non tradotto): per esempio il sito ha due versioni linguistiche ma alcune pagine non hanno traduzione e mostrano lo stesso articolo in inglese. Come misura temporanea puoi puntare il canonical alla lingua principale.
  • Versione temporanea in attesa della traduzione: hai creato una pagina russa ma non è ancora compilata. Finché la traduzione è in corso puoi puntare il canonical all'inglese, ma appena la traduzione è pronta il canonical deve tornare autoreferenziale.
In tutti gli altri casi (contenuto tradotto e unico) usa sempre canonical autoreferenziali.

Come verificare

Puoi verificare il canonical con curl o con gli strumenti del browser. Per una pagina russa:

bash
curl -I https://example.com/ru/page | grep -i canonical

Output atteso: Link: <https://example.com/ru/page>; rel="canonical". Se vedi un URL diverso (soprattutto in un'altra lingua), è un errore da correggere.

FAQ

Perché Google consiglia canonical autoreferenziali sui siti multilingua?
Perché ogni versione linguistica è un contenuto indipendente pensato per il proprio pubblico: ha title, meta tag e testi diversi. hreflang già indica la relazione, quindi il canonical non deve confonderle.
Cosa succede se ho puntato per sbaglio il canonical a un'altra lingua?
Google può deindicizzare le pagine con la versione linguistica «sbagliata». Dopo la correzione del canonical servirà tempo perché il motore di ricerca le reinserisca nell'indice.
Devo cambiare il canonical quando uso ccTLD (.ru, .de)?
Se usi domini separati per paese, il canonical su quei domini deve comunque essere autoreferenziale. Per esempio, su example.ru il canonical punta a example.ru/page e su example.de a example.de/seite. hreflang poi punta agli altri domini.
Il canonical incide sull'elaborazione di hreflang?
Sì. Se il canonical punta a un'altra versione linguistica, Google può ignorare hreflang o trattare la versione come duplicato. Segui sempre la regola: hreflang collega, il canonical resta autoreferenziale dentro ogni versione.
E se il sito usa sottocartelle tipo example.com/en/ e example.com/ru/?
Vale lo stesso principio: sulla pagina /en/ canonical = example.com/en/page, su /ru/ = example.com/ru/page. hreflang punta ai rispettivi percorsi.