Verifica hreflang

Inserisci l’indirizzo di una pagina che esiste in più lingue. Leggiamo le sue righe hreflang, convalidiamo ogni codice, poi visitiamo ogni versione alternativa per vedere se risponde, se può essere indicizzata e se a sua volta cita questa pagina.

Le annotazioni si leggono pagina per pagina, quindi indica l’indirizzo della pagina stessa, non solo il dominio. La home page è un buon primo test.

Oppure prova www.mozilla.org/en-US/, wordpress.org

Un elenco di gemelli, ripetuto su ogni gemello

Quando la stessa pagina esiste in inglese, tedesco e giapponese, un motore di ricerca vede tre pagine distinte. Con hreflang gli dici che sono una sola pagina in tre versioni, così un lettore a Berlino riceve l’indirizzo tedesco e non quello inglese. Ogni versione porta l’elenco completo delle versioni, compresa se stessa:

<link rel="alternate" hreflang="en" href="https://www.example.com/en/pricing/">
<link rel="alternate" hreflang="de" href="https://www.example.com/de/preise/">
<link rel="alternate" hreflang="ja" href="https://www.example.com/ja/pricing/">
<link rel="alternate" hreflang="x-default" href="https://www.example.com/en/pricing/">

L’elenco può stare in tre posti: nel <head> della pagina, in un’intestazione di risposta Link o nella sitemap XML. Questa verifica legge i primi due. Non legge le sitemap, quindi una pagina senza annotazioni qui potrebbe comunque essere coperta lì.

Hreflang cambia quale versione viene mostrata. Non cambia il posizionamento della pagina. I motori di ricerca lo trattano come un suggerimento e lo scartano appena sembra incoerente: per questo i piccoli errori costano tanto.

Com’è fatto un codice valido

Un valore è una lingua, seguita eventualmente da una scrittura e da un paese, uniti da trattini. Maiuscole e minuscole non contano.

ParteStandardEsempi
Lingua (obbligatoria)ISO 639-1, due lettereen, de, ja, pt
Scrittura (facoltativa)ISO 15924, quattro letterezh-Hans, zh-Hant, sr-Latn
Paese (facoltativo)ISO 3166-1, due lettereen-GB, pt-BR, zh-Hant-TW

Il paese non sta mai da solo e non viene mai per primo. Ecco gli errori che questa verifica segnala, con la correzione quando ce n’è una sola possibile:

  • en-UK: il codice ISO del Regno Unito è GB.
  • en_US: un trattino basso, come lo scrivono le impostazioni locali dei software. Hreflang vuole en-US.
  • es-LA: si legge come spagnolo per il Laos. Google non riconosce nessun codice per l’America Latina, quindi usa es oppure una riga per paese.
  • jp, cn, cz, dk: codici di paese usati come lingue. Le lingue sono ja, zh, cs, da.
  • en-EU, es-419, codici di tre lettere come eng e codici ritirati come iw per l’ebraico.

La tabella dei risultati scrive ogni codice per esteso. Così si scoprono gli errori che nessuna regola può cogliere, come uk, che è un codice perfettamente valido e significa ucraino.

Cosa si controlla sulla pagina stessa

  • Indirizzi. Ogni riga richiede un indirizzo completo, con schema e host. Quelli relativi vengono segnalati.
  • Duplicati e conflitti. La stessa riga ripetuta due volte non fa danni ed è segnalata come osservazione. Uno stesso codice dato a due indirizzi diversi è un errore, perché nessuno può sapere quale pagina sia la versione per quella lingua.
  • Autoriferimento. La pagina deve comparire nel proprio elenco, con il suo indirizzo esatto. Basta una barra finale mancante per rompere la corrispondenza.
  • x-default. La versione per i lettori la cui lingua non è in elenco. È facoltativa, quindi ometterla produce una nota e non conta come difetto.
  • Canonical. Hreflang funziona solo tra pagine canoniche. Una pagina tedesca il cui canonical indica la pagina inglese dice ai motori di ricerca di dimenticare quella tedesca, e le sue righe hreflang se ne vanno con lei.
  • L’attributo lang. Se <html lang> dice sv mentre la pagina si elenca come se, uno dei due è sbagliato.
  • Posizione. Le righe che finiscono fuori dal <head>, spesso perché un elemento fuori posto chiude l’head in anticipo, vengono ignorate da Google e segnalate qui.

I link di ritorno, la metà che di solito non funziona

Un’annotazione conta solo se le due pagine sono d’accordo. Se la pagina inglese dice «la mia versione tedesca è lì» e la pagina tedesca non dice «la mia versione inglese è qui», la coppia viene scartata. Così, dopo aver letto la tua pagina, il nostro server richiede una volta ogni versione alternativa, senza seguire i reindirizzamenti, e per ciascuna riporta:

Stato
Deve rispondere 200. Un reindirizzamento significa che la riga indica un indirizzo che non è quello finale. Un errore significa che la versione non esiste più. Un x-default che reindirizza è accettato, perché è proprio quello che fa un selettore di lingua.
Indicizzabile
Nessun noindex in un meta tag robots o in un’intestazione X-Robots-Tag.
Canonical verso se stessa
Il suo canonical, se ne ha uno, deve essere il suo stesso indirizzo.
Link di ritorno
Il suo blocco deve elencare la tua pagina, con lo stesso codice che la tua pagina usa per se stessa.

Quando le correzioni sono meccaniche (un codice scritto male, un indirizzo relativo, una riga ripetuta, una riga mancante per la pagina stessa), il risultato termina con un blocco corretto da incollare. Le righe che richiedono una tua decisione restano come sono, segnate con un commento.

Una verifica visita al massimo 35 versioni alternative e si ferma dopo circa mezzo minuto. La tabella segna quelle saltate. Non vediamo le annotazioni scritte da JavaScript, e un sito che reindirizza i visitatori in base alla posizione può mostrare al nostro server qualcosa di diverso da quello che riceve un crawler.

Domande frequenti

Mi serve hreflang se il mio sito è in una sola lingua?

No. Hreflang collega tra loro le versioni della stessa pagina. Con una sola versione non c’è niente da collegare, e la verifica riporta «nessuna annotazione» come risultato neutro.

Cos’è x-default ed è obbligatorio?

È la riga per tutti quelli che le altre righe non coprono, come un lettore la cui lingua non offri. Di solito punta alla versione inglese o a una pagina in cui il visitatore sceglie la lingua. È consigliato, non obbligatorio.

Devo usare solo il codice della lingua o aggiungere il paese?

Usa solo la lingua (de) quando una pagina serve chiunque parli quella lingua. Aggiungi il paese (de-AT, de-CH) solo quando pubblichi pagine diverse per paese, per esempio per prezzi o spedizioni. Puoi combinare le due cose, con righe per paese per le pagine specifiche e una riga di sola lingua come versione generale.

Cosa significa «nessun link di ritorno»?

La tua pagina cita un’altra versione, ma quella versione non cita la tua pagina nel proprio blocco hreflang. I motori di ricerca ignorano le annotazioni a senso unico. Per risolvere, pubblica lo stesso elenco completo su ogni versione, idealmente da un’unica fonte condivisa.

Hreflang può puntare a un altro dominio?

Sì. example.com ed example.de possono essere versioni l’uno dell’altro, purché ciascuno elenchi l’altro e se stesso. Le regole sono le stesse che all’interno di un solo dominio.

Hreflang sostituisce il tag canonical?

No. Fanno lavori diversi e devono essere d’accordo. Il canonical dice quale indirizzo rappresenta una pagina tra i suoi duplicati, hreflang dice quali altre pagine sono le sue traduzioni. Ogni versione linguistica dovrebbe essere canonica verso se stessa.