Errori hreflang: cosa significano e come correggerli

La maggior parte degli errori hreflang si riduce a una cosa: le versioni linguistiche di una pagina non concordano tra loro, quindi i motori di ricerca non possono fidarsi di ciò che indicano. Correggi prima questi problemi, iniziando dai link di ritorno mancanti e dalle pagine che non rimandano a se stesse. Di solito dipendono da un'unica impostazione del modello o del plugin, quindi basta correggerla una volta, senza intervenire pagina per pagina. Ecco cosa significa ciascun errore, nell'ordine in cui li affronterei.

Prima di iniziare: esegui il controllo su due pagine

Hreflang è un insieme di link che indica ai motori di ricerca quale versione linguistica di una pagina mostrare a ogni persona. Spesso i problemi riguardano la relazione tra due pagine, quindi controlla una pagina e una sua traduzione, non solo la home page.

Il controllo hreflang gratuito legge i tag di una pagina nell'head HTML e nell'header HTTP Link, poi apre fino a 20 delle sue versioni linguistiche per verificare che rispondano e rimandino alla pagina. C'è un limite da conoscere: non legge la sitemap XML. Se hreflang è presente solo nella sitemap, il rapporto dirà che non ne ha trovato alcuno. Questo non significa che la configurazione sia errata. Verifica quelle voci in base alle regole qui sotto.

Gli errori da correggere per primi

Questi possono indurre i motori di ricerca a ignorare hreflang per una pagina o per una coppia di pagine.

Una versione linguistica non rimanda all'altra ("link di ritorno mancante"). Se la pagina in inglese indica quella in tedesco come versione tedesca, anche la pagina in tedesco deve indicare quella in inglese. Se il link funziona in una sola direzione, i motori di ricerca potrebbero ignorare la coppia. Succede di solito quando una lingua è stata aggiunta in un secondo momento o quando solo la lingua principale ha i tag. Correzione: ogni versione deve contenere lo stesso elenco completo.

La pagina non rimanda a se stessa. Ogni pagina elenca tutte le sue versioni, compresa se stessa. Correzione: aggiungi all'elenco l'URL della pagina stessa. Se il rapporto dice che rimanda a se stessa «solo con una barra finale diversa», usa l'indirizzo esatto a cui risponde la pagina. Per un motore di ricerca, /de e /de/ sono due URL.

Una versione linguistica non restituisce 200. Un link a una pagina che restituisce un errore 404 o del server è un vicolo cieco. Succede spesso con pagine esistenti solo in alcune lingue, quando un modello elenca comunque tutte le lingue. Correzione: elenca solo le lingue in cui la pagina esiste davvero oppure pubblica la versione mancante.

L'URL canonico punta a un'altra pagina. I motori di ricerca ignorano hreflang su una pagina che non è canonica. Il caso classico è quello in cui la canonical di ogni traduzione punta alla pagina nella lingua principale, indicando ai motori di ricerca che le traduzioni non sono le pagine effettive. Correzione: la canonical di ogni versione linguistica deve puntare a se stessa.

Un codice lingua è errato. I due casi più frequenti:

  • en-UK non è valido, perché il codice paese del Regno Unito è GB. Usa en-GB.
  • en_US non è valido, perché hreflang usa il trattino. Usa en-US.

I codici lingua si basano sulla norma ISO 639-1, seguiti facoltativamente da un paese secondo la norma ISO 3166-1, ad esempio de o de-AT. Un paese da solo non è una lingua.

Un URL è relativo o vuoto. Gli URL hreflang devono essere assoluti, con https:// e il dominio. /de/pricing non basta.

I tag si trovano nel body. I motori di ricerca leggono i link hreflang solo nell'<head>. Una causa comune è un tag fuori posto o uno script che chiude il head in anticipo, oppure un tema che inserisce i tag troppo tardi.

Una lingua rimanda a due URL diversi. A ogni lingua corrisponde un solo indirizzo per ciascun gruppo. Verifica che non ci siano due sistemi che scrivono i tag contemporaneamente, ad esempio un tema e un plugin.

Avvisi che vale la pena correggere quando ci arrivi

Non sempre comportano conseguenze, ma risolverli costa poco:

  • Manca x-default. Indica la pagina da mostrare ai visitatori la cui lingua non è disponibile, spesso quella nella lingua principale o un selettore di lingua. È facoltativo, ma consigliato.
  • <html lang> non corrisponde. Una pagina contrassegnata come tedesca con <html lang="en"> invia segnali contrastanti. Di solito si tratta di un valore predefinito del modello che nessuno ha modificato.
  • Una versione linguistica reindirizza. Inserisci il link all'indirizzo finale, non a quello che reindirizza lì. I link http:// e l'assenza di www sono le cause più comuni.
  • Una versione linguistica elenca un insieme diverso di lingue. Una pagina ne elenca cinque e la sua traduzione quattro. Spesso significa che una lingua è stata aggiunta ad alcune pagine ma non alle altre.
  • Lo stesso URL è indicato per più lingue. È possibile che più paesi condividano una pagina (de-DE, de-AT), ma se tutte le lingue puntano allo stesso indirizzo, di solito significa che le traduzioni non sono affatto pagine separate.
  • L'HTML e l'header HTTP non concordano. Scegli un metodo e usalo con coerenza.

Come si presenta un insieme corretto

Per una pagina in inglese e in tedesco, entrambe le pagine devono contenere lo stesso blocco nel proprio <head>:

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

La canonical della pagina in inglese è https://example.com/pricing. Quella della pagina in tedesco è https://example.com/de/preise. Tutto qui: stesso elenco su entrambe, indirizzi completi, codici validi e canonical di ciascuna pagina che punta a se stessa. Il generatore nella pagina dello strumento di controllo crea questo blocco e le voci corrispondenti nella sitemap a partire dall'elenco di lingue e URL.

Correggi la fonte, non la pagina

Su un sito di qualsiasi dimensione, nessuno dovrebbe modificare hreflang a mano. Se un controllo non va a buon fine, individua cosa genera i tag:

  1. Un tema o un modello. Una sola correzione vale per tutte le pagine: questa è la buona notizia.
  2. Un plugin. Controlla prima le impostazioni e verifica che un secondo plugin o il tema non generi altri tag.
  3. Un generatore di sitemap. Rigenerala dopo ogni modifica alle lingue.
  4. Un sito realizzato a mano. Valuta di generare l'elenco da un'unica tabella di pagine e lingue, così una nuova lingua non potrà raggiungere solo metà del sito.

Poi ripeti il controllo sulle stesse due pagine e su una pagina aggiunta di recente. È proprio con le nuove pagine che il problema tende a ripresentarsi.

Non aspettarti che i risultati di ricerca cambino lo stesso giorno. Prima i motori di ricerca devono scansionare di nuovo le pagine e hreflang è un segnale, non un comando: quindi tag corretti non garantiscono quale versione verrà mostrata per ogni ricerca. Se anche dopo questa operazione continua a posizionarsi bene la lingua sbagliata, verifica che la pagina giusta abbia contenuti reali e completi e che le altre pagine vi rimandino. La nostra guida su come aggiungere una seconda lingua illustra la configurazione più ampia.

Se preferisci non doverci più pensare

Ho integrato questa funzione in FolioPress perché hreflang comporta un sacco di regole per qualcosa che dovrebbe essere invisibile. Ogni pagina riceve i propri tag automaticamente, nella pagina e nella sitemap, con link di ritorno, x-default, canonical autoreferenziali e un indirizzo tradotto per ogni lingua. Una pagina elenca solo le lingue per cui esiste una versione, quindi una traduzione mancante non genera un link non funzionante.

È utile solo se realizzi il tuo sito con FolioPress, però. Non corregge hreflang su un sito che gestisci altrove. Se per il resto il tuo sito attuale funziona bene, correggerne il modello è la soluzione più economica. Se è la seconda o la terza cosa che un plugin per le lingue ha danneggiato quest'anno, i piani partono da 12 € al mese, con una prova gratuita di 30 giorni (prezzi).