Hreflang: guida completa alla SEO internazionale

La base della SEO multilingue: senza hreflang Google mostra la pagina sbagliata all'utente sbagliato. Sintassi, errori comuni e verifica.

Hreflang è un attributo HTML che dice ai motori di ricerca per quale lingua e regione è destinata ogni versione di una pagina. Google usa questi dati per mostrare agli utenti la versione dei contenuti coerente con la loro lingua e geografia.

Senza hreflang Google prova a indovinare da solo la versione giusta — e spesso sbaglia: un utente di lingua russa riceve la pagina inglese, un tedesco vede la versione francese. Questo riduce la CTR, aumenta la frequenza di rimbalzo e costa conversioni.

Hreflang lega le versioni linguistiche con link reciproci — ogni pagina deve puntare esplicitamente a tutte le altre.
Hreflang determina quale versione della pagina viene mostrata all'utente, ma non il posizionamento in modo diretto. Google non penalizza la sua assenza, però senza di esso perdi rilevanza nei risultati di ricerca.

Cos'è hreflang

Come hreflang collega le versioni di un sito multilingue.

L'attributo hreflang è stato introdotto nel 2011 — Google lo ha creato per risolvere il problema dei contenuti duplicati sui siti internazionali. Se una pagina /about esiste come /en/about, /de/about e /fr/about, Google non deve trattarle come duplicate — ciascuna serve un pubblico separato.

2011

Anno di introduzione

Google ha introdotto hreflang per i siti multilingue

179+

Codici regione

Codici ISO 3166-1 alpha-2 supportati da Google

100%

Reciprocità

Tutte le versioni della pagina devono linkarsi a vicenda

≤ 10ms

Impatto sulla velocità

Un hreflang implementato correttamente non rallenta il sito

Hreflang è supportato solo da Google e Yandex. Bing usa il meta tag Content-Language e gli header HTTP, ma lavora con la struttura degli URL e il geo-targeting tramite Webmaster Tools. Se il tuo pubblico include utenti di lingua russa, hreflang resta necessario perché Yandex funzioni correttamente.

Quando usare hreflang

Non ogni sito multilingue ha bisogno di hreflang — è importante capire quando l'attributo risolve davvero un problema.

SituazioneServe hreflangNote
Una lingua, paesi diversi (en-US, en-GB)SìContenuti diversi (prezzi, ortografia, promozioni)
Lingue diverse (en, de, fr)SìCaso d'uso principale di hreflang
Una lingua, una regioneNoInutile duplicare i link verso se stessi
Contenuti identici in tutte le versioniNoUsa canonical
Traduzione parziale (70%+ del contenuto)SìAnche le traduzioni parziali richiedono il markup
Traduzione automatica senza revisioneNoGoogle può considerarla spam
Se il contenuto di due versioni è del tutto identico (ad es. /en-us/ e /en-gb/ senza differenze), conviene usare canonical anziché hreflang.

Sintassi e formati

Hreflang usa codici di due standard: ISO 639-1 per la lingua e ISO 3166-1 alpha-2 per la regione. Formato: lingua o lingua-REGIONE.

html
<!-- Language only -->
<link rel="alternate" hreflang="ru" href="https://example.com/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/" />

<!-- Language + region -->
<link rel="alternate" hreflang="en-US" href="https://example.com/en-us/" />
<link rel="alternate" hreflang="en-GB" href="https://example.com/en-gb/" />
<link rel="alternate" hreflang="fr-FR" href="https://example.com/fr/" />
<link rel="alternate" hreflang="fr-CA" href="https://example.com/fr-ca/" />

<!-- x-default: page for users without a matching locale -->
<link rel="alternate" hreflang="x-default" href="https://example.com/" />

In hreflang la regione si scrive sempre in maiuscolo (en-GB, fr-CA), la lingua in minuscolo (en, fr). Molte implementazioni usano tutto minuscolo — Google capisce entrambe le forme, ma seguire il formato canonico è una buona pratica.

CodiceSignificato
ruRusso (qualsiasi regione)
enInglese (qualsiasi regione)
en-USInglese per gli Stati Uniti
en-GBInglese per il Regno Unito
de-ATTedesco per l'Austria
zh-HansCinese semplificato
zh-HantCinese tradizionale
x-defaultPagina per regione/lingua non definita

Metodi di implementazione

Hreflang si può implementare in tre modi. La scelta dipende dalla tecnologia e dalla scala del sito.

1. Tag HTML nella sezione head

Il metodo più comune. I tag <link rel="alternate" hreflang="..."> vengono aggiunti al <head> di ogni pagina. Punto cruciale: tutte le versioni della pagina devono linkare tutte le altre versioni, compresa se stesse.

html
<!-- Page /en/about — links to ALL versions -->
<head>
  <link rel="alternate" hreflang="en" href="https://example.com/en/about/" />
  <link rel="alternate" hreflang="ru" href="https://example.com/about/" />
  <link rel="alternate" hreflang="de" href="https://example.com/de/about/" />
  <link rel="alternate" hreflang="x-default" href="https://example.com/en/about/" />
  <link rel="canonical" href="https://example.com/en/about/" />
</head>

2. Header HTTP Link

Per PDF, immagini e altre risorse non HTML si usano gli header HTTP. Il metodo funziona anche per qualsiasi pagina, ma richiede configurazione lato server.

nginx
# Nginx: add hreflang via HTTP headers
add_header Link '</en/about/>; rel="alternate"; hreflang="en", </about/>; rel="alternate"; hreflang="ru", </de/about/>; rel="alternate"; hreflang="de"';

3. Sitemap XML

L'approccio ottimale per i siti grandi (10.000+ pagine). Tutte le relazioni hreflang vengono descritte nella sitemap — questo riduce il peso dell'HTML e centralizza la gestione.

xml
<?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://example.com/en/about/</loc>
    <xhtml:link rel="alternate" hreflang="en"
                href="https://example.com/en/about/"/>
    <xhtml:link rel="alternate" hreflang="ru"
                href="https://example.com/about/"/>
    <xhtml:link rel="alternate" hreflang="de"
                href="https://example.com/de/about/"/>
    <xhtml:link rel="alternate" hreflang="x-default"
                href="https://example.com/en/about/"/>
  </url>
</urlset>
Non mescolare i metodi: se hreflang è implementato in HTML, non aggiungerlo anche alla sitemap — Google processerebbe entrambe le fonti, creando possibili conflitti.

x-default: pagina selettore lingua

Il valore x-default designa la pagina per gli utenti la cui lingua o regione non corrisponde a nessuna delle alternative dichiarate. Google mostra questa versione quando non esiste un hreflang corrispondente.

  • Pagina selettore lingua — l'utente arriva su /choose-language/ e sceglie la propria versione
  • Versione principale del sito — il più delle volte la versione inglese o quella che Google deve mostrare per default
  • Homepage — se il sito ha diverse lingue, x-default punta a /
x-default non è obbligatorio, ma Google raccomanda vivamente di aggiungerlo. Senza, gli utenti senza una locale corrispondente ricevono la versione che capita di essere nell'indice.

Canonical + hreflang

Canonical e hreflang risolvono problemi diversi ma lavorano insieme. La regola è semplice: il canonical punta sempre a se stesso (self-canonical) quando la pagina ha hreflang.

html
<!-- CORRECT: canonical points to self + hreflang covers all versions -->
<link rel="canonical" href="https://example.com/en/about/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/about/" />
<link rel="alternate" hreflang="ru" href="https://example.com/about/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/about/" />

<!-- WRONG: canonical points to a different language version -->
<link rel="canonical" href="https://example.com/ru/about/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/about/" />

Se il canonical della pagina inglese punta alla versione russa, Google tratterà la pagina inglese come duplicata e non la includerà nell'indice. Per questo hreflang senza self-canonical è di fatto inutile.

Errori comuni

Secondo i dati di audit, circa il 60% dei siti con hreflang ha almeno un errore critico. Ecco i più frequenti.

Errore 1: link reciproci mancanti

Il problema più diffuso. La pagina A linka la pagina B via hreflang, ma la pagina B non linka indietro la pagina A. Google ignora questi hreflang — senza reciprocità non sono validi.

Errore 2: codici lingua errati

  • hreflang="en_US" con underscore invece del trattino — codice non valido
  • hreflang="english" — una parola invece di un codice ISO
  • hreflang="zh" invece di hreflang="zh-Hans" o hreflang="zh-Hant" — il cinese richiede l'indicazione della scrittura
  • hreflang="ru-RU" invece di hreflang="ru" — codice regione superfluo per una lingua senza dialetti

Errore 3: hreflang su pagine non indicizzabili

Se una pagina è bloccata in robots.txt o marcata noindex, l'hreflang per essa è inutile. Google non processa hreflang su pagine che non può indicizzare.

Errore 4: redirect automatici in base alla lingua

Alcuni siti reindirizzano gli utenti in base alla lingua del browser: un visitatore russo chiede /about/ e finisce su /ru/about/. Google vede un redirect 301 e non riesce a processare correttamente hreflang. Soluzione: servi i contenuti senza redirect, usa il cambio via JavaScript o i cookie.

Errore 5: hreflang che puntano a 404 o redirect

Hreflang deve puntare a URL finali e canonical. Link che passano da redirect o verso pagine 404 invalidano l'attributo per quella versione.

Strumenti di verifica

StrumentoCosa controllaCosto
Google Search ConsoleErrori hreflang nel report International TargetingGratis
Aleyda Solis hreflang toolValidità dei tag su una singola pagina, reciprocità dei linkGratis
TechnicalSEO hreflang checkerVerifica in batch, export degli erroriGratis / a pagamento
Screaming FrogScansione completa con analisi hreflangA pagamento
Ahrefs Site AuditErrori hreflang dentro l'audit SEOA pagamento
Semrush Site AuditReport hreflang dedicatoA pagamento

FAQ

Hreflang influisce sul posizionamento?
No — hreflang non è un fattore di posizionamento diretto. Determina quale versione della pagina viene mostrata a un dato utente, non la posizione nella SERP. Un'implementazione corretta però migliora le metriche indirettamente: la frequenza di rimbalzo scende, tempo sul sito e conversioni crescono, perché gli utenti vedono la versione rilevante per loro.
Ogni pagina del sito ha bisogno di hreflang?
Solo le pagine che hanno corrispettivi in altre lingue. Le pagine di servizio (login, checkout, rotte API), le pagine con noindex e le pagine senza equivalenti linguistici non hanno bisogno di hreflang.
Cosa succede se hreflang punta a un URL con redirect 301?
Google proverà a seguire il redirect, ma il risultato è imprevedibile. Alcuni parser hreflang si fermano sull'URL intermedio. Punta sempre all'URL canonical finale, senza redirect.
Posso usare hreflang solo nella sitemap, senza HTML?
Sì — per i siti grandi è persino l'approccio preferibile. Google supporta ufficialmente entrambi i metodi. L'importante è non usarli insieme sulle stesse pagine.
Quanto impiega Google a processare un nuovo hreflang?
Di norma da pochi giorni a qualche settimana — dipende dalla frequenza di scansione del sito. Per accelerare: aggiungi una sitemap con hreflang in Google Search Console e richiedi la reindicizzazione delle pagine chiave.

Check it with SpiderHead

Free and local: run the audit on your own machine.

Try it