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.
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.
| Parte | Standard | Esempi |
|---|---|---|
| Lingua (obbligatoria) | ISO 639-1, due lettere | en, de, ja, pt |
| Scrittura (facoltativa) | ISO 15924, quattro lettere | zh-Hans, zh-Hant, sr-Latn |
| Paese (facoltativo) | ISO 3166-1, due lettere | en-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 vuoleen-US.es-LA: si legge come spagnolo per il Laos. Google non riconosce nessun codice per l’America Latina, quindi usaesoppure una riga per paese.jp,cn,cz,dk: codici di paese usati come lingue. Le lingue sonoja,zh,cs,da.en-EU,es-419, codici di tre lettere comeenge codici ritirati comeiwper 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>dicesvmentre la pagina si elenca comese, 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
noindexin un meta tag robots o in un’intestazioneX-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.