Informare Google dell'esistenza di versioni localizzate di una pagina

Se hai più versioni di una pagina relative a lingue o aree geografiche diverse, informa Google dell'esistenza di tali varianti. In questo modo la Ricerca Google potrà indirizzare gli utenti alla versione della pagina più appropriata in base alla lingua o all'area geografica.

Tieni presente che Google potrebbe trovare anche senza il tuo intervento le versioni della pagina in altre lingue, ma generalmente è meglio indicare espressamente le pagine relative a lingue o aree geografiche specifiche.

Di seguito sono riportati alcuni scenari di esempio per cui è consigliabile indicare le pagine alternative:

  • Se mantieni i contenuti principali in una sola lingua e traduci soltanto il modello, ad esempio la barra di navigazione e il piè di pagina. Si tratta di una soluzione comune per le pagine con contenuti generati dagli utenti, come i forum.
  • Se i tuoi contenuti presentano piccole varianti locali con contenuti simili in un'unica lingua. Ad esempio, potresti avere contenuti in inglese destinati a utenti di Stati Uniti, Gran Bretagna e Irlanda.
  • Se i contenuti del tuo sito sono completamente tradotti in diverse lingue. Ad esempio, per ogni pagina hai le versioni in tedesco e in inglese.

Le versioni localizzate di una pagina vengono considerate duplicati solo se i contenuti principali della pagina rimangono non tradotti.

Metodi per indicare le pagine alternative

Esistono tre modi per indicare a Google le versioni di una pagina in diverse lingue e per diverse aree geografiche:

I tre metodi sono equivalenti dal punto di vista di Google e puoi scegliere tu quello che è più pratico per il tuo sito. Sebbene sia possibile utilizzare tutti e tre i metodi contemporaneamente, ciò non comporta vantaggi per la Ricerca (in realtà, potrebbe essere molto più difficile gestire tre implementazioni invece di sceglierne solo una).

Utilizza hreflang per comunicare a Google le varianti dei tuoi contenuti, in modo che capisca che queste pagine sono varianti localizzate degli stessi contenuti. Google non utilizza hreflang o l'attributo HTML lang per rilevare la lingua di una pagina; utilizza, invece, gli algoritmi per determinarla.

Linee guida per tutti i metodi

  • Per la versione in ogni lingua è necessario indicare la versione stessa e le versioni in tutte le altre lingue.
  • Gli URL alternativi devono essere completi e includere il metodo di trasporto (http/https), pertanto:
    https://example.com/foo, non //example.com/foo o /foo
  • Non è necessario che gli URL alternativi siano nello stesso dominio.
  • Se hai diversi URL alternativi indirizzati a utenti che parlano la stessa lingua, ma si trovano in aree geografiche diverse, è opportuno specificare anche un URL catch-all per gli utenti di tale lingua la cui area geografica non è specificata. Ad esempio, se hai URL specifici per gli utenti di lingua inglese in Irlanda (en-ie), Canada (en-ca) e Australia (en-au), fornisci un URL generico (en) per gli utenti che effettuano ricerche in inglese negli Stati Uniti, nel Regno Unito e in tutte le altre località in cui si parla inglese. Se vuoi, questo URL può essere una delle pagine specifiche.
  • Se due pagine non rimandano l'una all'altra, i tag vengono ignorati per fare in modo che un utente su un altro sito non possa creare arbitrariamente un tag che si autonomini versione alternativa di una delle tue pagine.
  • Se diventa difficile gestire un insieme completo di link bidirezionali per ogni lingua, puoi omettere alcune lingue in alcune pagine; Google elaborerà comunque le pagine che rimandano l'una all'altra. Tuttavia, è importante collegare tramite link bidirezionali le nuove pagine in lingua alle lingue di origine/principali. Ad esempio, se in origine il tuo sito è stato creato in francese con URL sul dominio .fr, è più importante collegare tramite link bidirezionali le nuove pagine in messicano (.mx) e spagnolo (.es) alle pagine principali sul dominio .fr, anziché collegare tra loro tramite link bidirezionali le pagine delle nuove varianti in spagnolo (.mx e .es).
  • Prendi in considerazione l'aggiunta di una pagina di riserva per le lingue senza corrispondenza, in particolare per selettori di lingua/paese oppure home page con reindirizzamento automatico. Utilizza il valore x-default:
    <link rel="alternate" href="https://example.com/" hreflang="x-default" />

Tag HTML

Aggiungi elementi <link rel="alternate" hreflang="lang_code"... > all'intestazione della pagina per informare Google di tutte le varianti della pagina in diverse lingue e per differenti aree geografiche. Questo metodo è utile se non hai una Sitemap o la possibilità di specificare intestazioni della risposta HTTP per il tuo sito.

Per ogni variante della pagina, includi un insieme di elementi <link> nell'elemento <head>, un solo link per ogni variante della pagina, inclusa la pagina stessa. L'insieme di link è identico per ogni versione della pagina. Leggi le linee guida aggiuntive.

Ecco la sintassi di ogni elemento link:

<link rel="alternate" hreflang="lang_code" href="url_of_page" />
Sintassi
lang_code Un codice lingua/area geografica target supportato da questa versione della pagina oppure x-default per indicare qualsiasi lingua non elencata espressamente tramite un tag hreflang nella pagina.
url_of_page L'URL completo della versione di questa pagina relativa alla lingua/regione specificata.

Inserisci i tag <link> nella parte superiore dell'elemento <head>. I tag <link> devono essere inseriti almeno in una sezione <head> ben strutturata o prima di qualsiasi elemento che potrebbe causare la chiusura prematura di <head>, come <p> o un pixel di monitoraggio. In caso di dubbi, incolla il codice della pagina visualizzata in uno strumento di convalida HTML per assicurarti che i link siano all'interno dell'elemento <head>.

Esempio

Example Widgets, Inc ha un sito web per gli utenti negli Stati Uniti, in Gran Bretagna e in Germania. I seguenti URL hanno sostanzialmente gli stessi contenuti, ma con varianti locali:

URL con varianti locali
https://en.example.com/page.html Home page generica in inglese contenente informazioni sui costi delle spedizioni internazionali che partono dagli Stati Uniti.
https://en-gb.example.com/page.html Home page per il Regno Unito in cui i prezzi sono indicati in sterline inglesi.
https://en-us.example.com/page.html Home page per gli Stati Uniti che mostra i prezzi in dollari statunitensi.
https://de.example.com/page.html Home page in tedesco.
https://www.example.com/ Pagina predefinita che non ha come target una lingua o un'area geografica; include dei selettori per consentire agli utenti di scegliere la lingua e la regione.

Tieni presente che i sottodomini di questi URL relativi a lingue specifiche (en, en-gb, en-us, de) non vengono utilizzati da Google per determinare il pubblico di destinazione della pagina; devi mappare esplicitamente il pubblico di destinazione.

Di seguito è riportato il codice HTML che andrebbe nella sezione <head> di tutte le pagine elencate nella tabella URL con varianti locali. Questo codice serve a indirizzare gli utenti che parlano inglese americano, inglese britannico, inglese comune e tedesco alle pagine localizzate, nonché a rimandare tutti gli altri utenti a una home page generica. La Ricerca Google restituisce il risultato appropriato per l'utente, in base alle impostazioni del browser.

<head>
 <title>Widgets, Inc</title>
  <link rel="alternate" hreflang="en-gb"
       href="https://en-gb.example.com/page.html" />
  <link rel="alternate" hreflang="en-us"
       href="https://en-us.example.com/page.html" />
  <link rel="alternate" hreflang="en"
       href="https://en.example.com/page.html" />
  <link rel="alternate" hreflang="de"
       href="https://de.example.com/page.html" />
 <link rel="alternate" hreflang="x-default"
       href="https://www.example.com/" />
</head>

Intestazioni HTTP

Puoi restituire un'intestazione HTTP con la risposta GET della pagina per informare Google di tutte le varianti della pagina in diverse lingue e per diverse aree geografiche. Questo metodo è utile per i file in formato diverso da HTML, ad esempio PDF.

Ecco il formato dell'intestazione:

Link: <url1>; rel="alternate"; hreflang="lang_code_1", <url2>; rel="alternate"; hreflang="lang_code_2", ...
Sintassi
<url_x> L'URL completo della pagina alternativa corrispondente alla stringa dell'area geografica assegnata all'attributo hreflang associato. L'URL deve essere racchiuso tra i segni < e >. Esempio: <https://www.google.com>
lang_code_x Un codice lingua/area geografica target supportato da questa versione della pagina oppure x-default per indicare qualsiasi lingua non elencata espressamente tramite un tag hreflang nella pagina.

Devi specificare un set di valori <url>, rel="alternate" e hreflang per ogni versione della pagina, inclusa la versione richiesta, separati da una virgola come mostrato nell'esempio di seguito. L'intestazione Link: restituita per ogni versione di una pagina è sempre uguale. Leggi le linee guida aggiuntive.

Esempio

Di seguito è riportata un'intestazione Link: di esempio restituita da un sito con tre versioni di un file PDF: una per gli utenti di lingua inglese, una per gli utenti di lingua tedesca della Svizzera e un'altra per tutti gli altri utenti di lingua tedesca.

Link: <https://example.com/file.pdf>; rel="alternate"; hreflang="en",
      <https://de-ch.example.com/file.pdf>; rel="alternate"; hreflang="de-ch",
      <https://de.example.com/file.pdf>; rel="alternate"; hreflang="de"

Sitemap

Puoi utilizzare una Sitemap XML per indicare a Google tutte le varianti della lingua e della regione di ogni URL. A tale scopo, aggiungi un elemento <loc> che specifichi un singolo URL, con voci secondarie <xhtml:link> che elencano ogni variante di lingua/regione della pagina, inclusa la pagina stessa. Pertanto, se hai 3 versioni di una pagina, la Sitemap deve avere voci per gli URL di ciascuna versione, e ognuna deve avere 3 voci secondarie identiche.

Regole per la Sitemap:

  • Specifica lo spazio dei nomi xhtml come segue:
    xmlns:xhtml="http://www.w3.org/1999/xhtml"
  • Crea un elemento <url> separato per ogni URL come faresti con qualsiasi altra Sitemap.
  • Ogni elemento <url> deve includere un elemento secondario <loc> che indichi l'URL della pagina.
  • Ogni elemento <url> deve avere un elemento secondario <xhtml:link rel="alternate" hreflang="supported_language-code"> in cui sono elencate tutte le versioni alternative della pagina, inclusa la pagina stessa. L'ordine degli elementi secondari <xhtml:link> non è importante, anche se potresti voler mantenere lo stesso ordine per verificare più facilmente la presenza di errori. Gli elementi secondari non vengono conteggiati per il limite di URL per le Sitemap.
  • Carica la Sitemap in una directory del sito a cui è applicabile. Tieni presente che una Sitemap può contenere solo URL discendenti della directory in cui è ospitata.
  • La nostra documentazione sulle Sitemap si applica anche alle estensioni Sitemap. Assicurati di seguire le linee guida generali per le Sitemap.
  • Leggi le linee guida aggiuntive.

Esempio

Di seguito è riportata una pagina in inglese destinata agli utenti di lingua inglese di tutto il mondo, con le versioni equivalenti destinate a utenti di lingua tedesca di tutto il mondo e utenti di lingua tedesca che si trovano in Svizzera. Ecco tutti gli URL presenti sul tuo sito:

  • www.example.com/english/page.html è rivolto a utenti di lingua inglese.
  • www.example.de/deutsch/page.html è rivolto a utenti di lingua tedesca.
  • www.example.de/schweiz-deutsch/page.html è rivolto a utenti di lingua tedesca che risiedono in Svizzera.

Ecco la Sitemap relativa a queste tre pagine:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
  xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>https://www.example.com/english/page.html</loc>
    <xhtml:link
               rel="alternate"
               hreflang="de"
               href="https://www.example.de/deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="de-ch"
               href="https://www.example.de/schweiz-deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="en"
               href="https://www.example.com/english/page.html"/>
  </url>
  <url>
    <loc>https://www.example.de/deutsch/page.html</loc>
    <xhtml:link
               rel="alternate"
               hreflang="de"
               href="https://www.example.de/deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="de-ch"
               href="https://www.example.de/schweiz-deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="en"
               href="https://www.example.com/english/page.html"/>
  </url>
  <url>
    <loc>https://www.example.de/schweiz-deutsch/page.html</loc>
    <xhtml:link
               rel="alternate"
               hreflang="de"
               href="https://www.example.de/deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="de-ch"
               href="https://www.example.de/schweiz-deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="en"
               href="https://www.example.com/english/page.html"/>
  </url>
</urlset>

Codici regione e lingua supportati

Il valore dell'attributo hreflang è composto da uno o facoltativamente due valori separati da un trattino. Ad esempio, en-US. Il primo codice dell'attributo hreflang è il codice della lingua (nel formato ISO 639-1) seguito da un secondo codice facoltativo che rappresenta il codice della regione (nel formato ISO 3166-1 Alpha 2) di un URL alternativo.

Per scegliere come target persone che parlano un'altra lingua in Belgio, potresti utilizzare i seguenti codici di lingua e regione:

  • Valido (tedesco per gli utenti in Belgio): de-be
  • Valido (olandese per gli utenti in Belgio): nl-be
  • Valido (francese per gli utenti in Belgio): fr-be
  • Non valido perché il primo codice riguarda la lingua (be è il codice della lingua bielorussa): be

Per attribuire più facilmente le etichette, puoi specificare soltanto il codice della lingua. Ad esempio:

  • de: contenuti in tedesco, a prescindere dalla regione.
  • en-GB: contenuti in inglese per gli utenti in Gran Bretagna.
  • de-ES: contenuti in tedesco per gli utenti in Spagna.

Per le varianti del sistema di scrittura di una lingua, il sistema di scrittura corretto viene dedotto dal paese. Ad esempio, se specifichi zh-TW per gli utenti a Taiwan, il sistema di scrittura della lingua viene ricavato automaticamente (in questo esempio il cinese tradizionale). Puoi anche specificare esplicitamente il sistema di scrittura utilizzando il formato ISO 15924, come di seguito:

  • zh-Hant: cinese (tradizionale)
  • zh-Hans: cinese (semplificato)

Come con i codici di altre lingue, puoi specificare anche una regione facoltativa. Ad esempio, utilizza zh-Hans-US per specificare il cinese semplificato per gli utenti negli Stati Uniti.

Utilizzare il valore x-default per le lingue senza corrispondenza

Il valore riservato x-default viene usato quando nessun'altra lingua/regione corrisponde all'impostazione del browser dell'utente. Questo valore è consigliato per specificare la pagina di riserva per gli utenti le cui impostazioni di lingua non corrispondono a nessuna delle versioni localizzate del tuo sito. Anche se puoi utilizzare il valore x-default per qualsiasi pagina, questo codice è stato progettato per le pagine con selettore di lingua e quindi funzionerà al meglio in quei casi.

Non è necessario specificare un codice lingua per il valore x-default; la pagina è indirizzata a utenti le cui impostazioni di lingua sono senza corrispondenza nel tuo sito, pertanto la lingua della pagina è irrilevante.

Per implementare l'annotazione hreflang="x-default", aggiungi un ulteriore tag link alle annotazioni hreflang esistenti e imposta l'attributo href sull'URL a cui vuoi che vengano reindirizzati i tuoi utenti se il tuo sito non supporta questa lingua. Ad esempio, un'implementazione HTML potrebbe avere il seguente aspetto:

<link rel="alternate" href="https://example.com/en-gb" hreflang="en-gb" />
<link rel="alternate" href="https://example.com/en-us" hreflang="en-us" />
<link rel="alternate" href="https://example.com/en-au" hreflang="en-au" />
<link rel="alternate" href="https://example.com/country-selector" hreflang="x-default" />

Risolvere i problemi

Errori comuni

Di seguito vengono indicati gli errori più comuni nell'utilizzo di hreflang:

  • Assenza di link di ritorno: se la pagina X rimanda alla pagina Y, la pagina Y deve rimandare alla pagina X. Se non è così per tutte le pagine che utilizzano le annotazioni hreflang, queste annotazioni potrebbero essere ignorate o interpretate in modo errato. Ad esempio, prendendo in considerazione questo link su https://de.example.com/index.html:
    <link rel="alternate" hreflang="en-gb" href="https://en-gb.example.com/index.html" />
    Devi avere anche un link hreflang su https://en-gb.example.com/index.html che rimandi alla versione de dei contenuti:
    <link rel="alternate" hreflang="de" href="https://de.example.com/index.html" />
  • Codici lingua sbagliati: assicurati che in tutti i codici lingua utilizzati siano identificate la lingua (nel formato ISO 639-1) e, facoltativamente, la regione (nel formato ISO 3166-1 Alpha 2) di un URL alternativo. Specificare solo la regione non è una scelta valida.

Eseguire il debug degli errori hreflang

Sono disponibili molti strumenti di terze parti che puoi utilizzare per eseguire il debug delle annotazioni hreflang. Di seguito sono riportati alcuni dei più usati. Questi strumenti non sono gestiti o controllati da Google.