Errori hreflang nei siti multilingue|7 motivi tecnici per cui i tag non funzionano

本文作者:Don jiang

Ad esempio, errori nel formato del codice lingua o percorsi di link incompleti possono impedire ai motori di ricerca di riconoscere correttamente la lingua o la regione della pagina, o addirittura causare una competizione tra pagine multilingue, facendo perdere traffico al pubblico target.

Questo articolo, dal punto di vista tecnico e pratico, riassume i 7 errori più comuni nella configurazione hreflang, suggerendo di utilizzare strumenti per verifiche periodiche, così da evitare che piccoli errori compromettano l’efficacia globale dell’ottimizzazione.

Errori hreflang in siti multilingue

Errore nel formato del codice lingua o regione

Ad esempio, usare lettere maiuscole (come EN-US) o errori di ortografia (come scrivere zh-CN come zh-CH) può impedire ai motori di ricerca di interpretare correttamente la regione target della pagina, o addirittura far considerare il tag non valido.

Anche se il codice sembra corretto (come usare es-ES invece di es), informazioni ridondanti possono interferire con la logica di corrispondenza.

L’impatto è significativo: per esempio, il traffico di ricerca degli utenti spagnoli potrebbe essere erroneamente indirizzato alla pagina in portoghese.

Regole del codice standard ISO

  • Codice lingua: Deve usare lettere minuscole secondo lo standard ISO 639-1 (es. en, es, zh), abbreviato in 2 lettere.
  • Codice regione: Opzionale, usa lettere maiuscole secondo ISO 3166-1 (es. US, GB, CN), abbreviazione di paese o regione.
  • Formato combinato: Separare lingua e regione con un trattino, per esempio en-US (inglese americano), zh-CN (cinese semplificato).

Eccezioni:

  • Solo codice lingua (es. fr) indica che è rivolto a tutti i parlanti francesi, senza limitazioni geografiche.
  • Per il cinese tradizionale usare zh-Hant (cinese tradizionale) o zh-Hant-TW (tradizionale di Taiwan), non zh-TW (che potrebbe essere interpretato come cinese semplificato di Taiwan).

Scenari tipici di errore e conseguenze

Errore 1: confusione maiuscole/minuscole

  • Esempi errati: EN-us (lingua maiuscola + regione minuscola), Zh-cn (prima lettera della lingua maiuscola).
  • Conseguenza: I motori di ricerca potrebbero ignorare completamente il tag, impedendo alla pagina di raggiungere gli utenti target.

Errore 2: errori di ortografia o codici inventati

  • Esempi errati: pt-BZ (il codice corretto per Brasile è BR), eu (lingua basca, che però alcuni motori potrebbero non supportare).
  • Conseguenza: Lingue rare o codici regione errati portano a indicizzazione errata, con traffico che va alla pagina nella lingua predefinita.

Errore 3: codici ridondanti o combinazioni errate

  • Esempi errati: es-ES (spagnolo + Spagna, in realtà basta es), en-US-UK (combinazione invalida di regioni multiple).
  • Conseguenza: Informazioni ridondanti confondono i motori, che potrebbero preferire pagine concorrenti più semplici.

Strumenti consigliati e metodi di verifica

  • Google hreflang Test Tool: Inserisci direttamente l’URL per verificare se il codice viene interpretato correttamente (usare insieme a Search Console).
  • Screaming Frog: Durante la scansione del sito, filtra i tag hreflang e esporta gli errori in batch (funzionalità premium).
  • Hreflang Validator (strumento di terze parti): Controllo online gratuito, segnala errori di formato e link in conflitto.

Passi pratici per la correzione

Controllo del codice esistente: Nel caso di siti WordPress, utilizzare plugin (come Yoast SEO) o visualizzare direttamente il codice sorgente della pagina per trovare i tag <link rel="alternate" hreflang="..." />.

Sostituzione di massa di codici errati

  1. Se utilizzi un plugin multilingue (come WPML), modifica direttamente il formato del “codice lingua” nelle impostazioni della lingua.
  2. Durante la modifica manuale, assicurati che tutte le pagine abbiano un formato uniforme (ad esempio sostituire globalmente EN con en).

Aggiunta del codice regionale (opzionale)

  • Aggiungi solo se necessario segmentare le regioni (ad esempio en-GB per utenti britannici), altrimenti mantieni solo il codice lingua puro (ad esempio fr).

Rivalidazione:Usa uno strumento per ricontrollare e assicurarti che le pagine corrette restituiscano il codice di stato 200 e non presentino errori di crawling.

Non usare URL assoluti completi

Molti webmaster pensano erroneamente che percorsi relativi (come /de/page) o omettere il protocollo (come example.com/de) semplifichi la configurazione, ma ciò può causare problemi seri.

Ad esempio, se una pagina esiste sia nelle versioni http che https, non specificare il protocollo può far interpretare al motore di ricerca due pagine distinte, disperdendo il valore SEO.

Inoltre, nei siti con sottodomini o strutture a sottocartelle, non usare URL completi può causare ambiguità nel percorso e il fallimento dei tag (ad esempio quando si mescolano URL per dispositivi mobili e desktop).

Definizione e necessità degli URL assoluti

URL assoluto deve includere protocollo (http:// o https://), dominio completo e percorso (come https://www.example.com/de/page).

Necessità

  1. I motori di ricerca devono distinguere chiaramente le pagine. I percorsi relativi (come /de/page) possono essere interpretati come qualsiasi versione del dominio (http o https), causando contenuti duplicati.
  2. Nei sottodomini o sottocartelle, non usare URL assoluti può far interpretare erroneamente la proprietà della pagina (ad esempio de.example.com/page e www.example.com/de/page possono essere considerati pagine differenti).

Situazioni tipiche problematiche

  • Le pagine esistono sia nelle versioni http che https, ma hreflang non include il protocollo, causando dispersione del valore SEO.
  • Contenuti condivisi tra versione mobile e desktop con URL diversi (come m.example.com/de e example.com/de) senza collegamento tramite URL assoluti.

Errori comuni e conseguenze

Errore 1: percorsi relativi o mancanza di protocollo

Esempi errati

  1. <link hreflang="de" href="/de/page" /> (percorso relativo)
  2. <link hreflang="es" href="www.example.com/es/page" /> (manca https://)

Conseguenze

  • I motori potrebbero interpretare /de/page come http://example.com/de/page, mentre la pagina reale è su https, causando malfunzionamento del tag hreflang.
  • Le versioni http e https della pagina sono considerate entità separate, causando contenuti duplicati e dispersione del valore SEO.

Errore 2: sottodomini non uniformi

  • Esempio errato: il sito principale usa https://example.com/fr/page, ma il sottosito francese usa un URL diverso.
  • https://fr.example.com/page e gli attributi hreflang non si riferiscono reciprocamente a URL assoluti.
  • Conseguenza: I motori di ricerca non riescono a stabilire una correlazione tra il sottodominio e le pagine del sito principale, e gli utenti francesi potrebbero essere indirizzati alla pagina della lingua predefinita.
  • Errore 3: Parametri dinamici non standardizzati

    • Esempio di errore: <link hreflang="ja" href="https://example.com/page?lang=ja" /> (contiene parametri di tracciamento)
    • Conseguenza: I motori di ricerca potrebbero considerare queste URL come pagine diverse (ad esempio ?lang=ja e ?lang=ja&utm=ads), causando una copertura incompleta dei tag hreflang.

    Metodi di verifica tramite strumenti

    • Google Search Console:
      Controllare nel rapporto di copertura gli errori dovuti a “pagine duplicate” o “hreflang non marcato” per individuare URL incomplete.
    • Screaming Frog:
      Dopo la scansione del sito, filtrare i tag hreflang e verificare se gli attributi href sono tutti URL assoluti (filtro: //example.com o /path).
    • Sitebulb:
      Nel rapporto di audit SEO internazionale segnala direttamente “URL hreflang incomplete” e fornisce suggerimenti per la correzione.

    Soluzioni e passaggi pratici

    Sistemi CMS (come WordPress):

    Configurazione plugin:
    Se si usano plugin come Yoast SEO, abilitare la generazione di URL assoluti nelle impostazioni multilingua (di solito disabilitando l’opzione “percorsi relativi”).

    Sostituzione batch nel database:
    Con comandi SQL o plugin come Better Search Replace, sostituire href="/ con href="https://www.example.com/.

    Correzione manuale del codice:
    Nel codice HTML o nella logica di rendering lato server, assicurarsi che tutti i link hreflang siano formattati come URL completi, ad esempio:

    <link rel="alternate" hreflang="de" href="<?php echo site_url('/de/page'); ?>" />

    Configurazione server:

    • Forzare il protocollo unificato: tramite .htaccess o configurazione Nginx, reindirizzare automaticamente da http a https per evitare contenuti misti.
    • Normalizzazione URL: applicare redirect 301 per variazioni di percorso che puntano allo stesso contenuto (es. /de e /de/) per garantire un’unica URL assoluta.

    Mancanza del tag hreflang autoreferenziale

    Ad esempio, se una pagina in francese indica solo i link alle versioni in inglese, spagnolo o altre lingue, ma non dichiara hreflang="fr" che punta a se stessa,

    I motori di ricerca potrebbero non riconoscere correttamente la lingua della pagina, causando un errato posizionamento nei risultati di ricerca per utenti francofoni.

    Ruolo e necessità del tag hreflang autoreferenziale

    Il tag autoreferenziale è la dichiarazione hreflang che punta a sé stessa nella pagina (ad esempio, una pagina in francese deve includere <link rel="alternate" hreflang="fr" href="URL della pagina stessa"/>).

    Funzioni principali:

    • Definire chiaramente per i motori di ricerca la lingua/area della pagina per evitare classificazioni errate.
    • Creare un ciclo chiuso tra le versioni in diverse lingue per garantire un corretto trasferimento del peso tra le pagine.

    Conseguenze della mancanza

    • I motori di ricerca potrebbero considerare la pagina come “lingua non dichiarata” e assegnarla di default alla directory principale della lingua, causando una perdita di traffico degli utenti target.
    • In scenari di competizione multilingue (ad esempio pagine in inglese e spagnolo senza auto-riferimento), potrebbero verificarsi problemi di contenuti duplicati interni.

    Scenari comuni di errore e analisi dei casi

    Errore 1: uso errato di hreflang in siti monolingua

    • Scenario: pagina con una sola versione linguistica, ma con hreflang che punta a pagine in altre lingue inesistenti.
    • Esempio di conseguenza: una pagina di un sito monolingua inglese aggiunge hreflang="en" che punta a se stessa, ma collega erroneamente anche a una pagina inesistente con hreflang="es", causando confusione nei motori di ricerca.

    Errore 2: configurazione errata del plugin multilingue

    • Esempio di scenario: usando il plugin WPML, l’opzione “Genera automaticamente hreflang autoriferito” non è selezionata.
    • Conseguenza: i tag generati includono solo link alle versioni in altre lingue, mancando la dichiarazione della pagina corrente.

    Errore 3: pagina dinamica con tag incompleti

    • Esempio di scenario: in pagine basate su JavaScript (come framework React/Vue), il tag hreflang non viene correttamente inserito nel <head>.
    • Conseguenza: i crawler dei motori di ricerca potrebbero non riconoscere il tag autoriferito generato dinamicamente.

    Strumenti e metodi di verifica

    Passo 1: controllo manuale del codice sorgente

    • Premere Ctrl+U per vedere il codice sorgente della pagina, cercare hreflang="xx" e verificare se esiste un tag che punta all’URL corrente (nota: xx è il codice lingua della pagina attuale).

    Passo 2: verifica con Google Search Console

    • Nello “Strumento di controllo URL”, inserire l’URL della pagina e controllare il report “Target internazionale” — se segnala “Tag hreflang autoriferito non rilevato” allora c’è il problema.

    Passo 3: strumento Hreflang Validator

    • Inserire l’URL della pagina; lo strumento elencherà tutti i link hreflang associati, evidenziando in rosso la mancanza del tag autoriferito.

    Soluzioni e passi pratici

    Correzione in CMS (esempio WordPress)

    Configurazione plugin

    • Se si usa Yoast SEO: attivare “Aggiungi hreflang autoriferito” nelle impostazioni avanzate.
    • Se si usa WPML: andare in “Impostazioni lingua” → “Opzioni SEO” e spuntare “Includi link a se stesso”.

    Correzione manuale (siti statici o codice personalizzato)

    Aggiungere questo codice nella sezione <head> della pagina (esempio per pagina in francese):

    <link rel="alternate" hreflang="fr" href="https://www.example.com/fr/page-actuelle" />
    <link rel="alternate" hreflang="x-default" href="https://www.example.com/" />

    Correzione delle pagine a rendering dinamico (come React)

    Nella logica di rendering lato server (SSR), il tag di autoreferenziazione viene generato dinamicamente in base alla lingua corrente della pagina:

    const hreflangSelf = `<link rel="alternate" hreflang="${currentLang}" href="${currentURL}"/>`;
    document.head.insertAdjacentHTML('beforeend', hreflangSelf);

    Le pagine multilingue non sono correlate tra loro

    Ad esempio, la pagina in tedesco punta alla versione inglese, ma la pagina inglese non collega indietro alla pagina tedesca.

    Un collegamento unilaterale impedisce ai motori di ricerca di riconoscere la relazione tra le versioni multilingue, il che può portare a indicizzare solo alcune pagine o addirittura a considerarle contenuti duplicati.

    Principio di collegamento circolare e necessità

    La regola principale di hreflang è che tutte le pagine correlate devono puntarsi reciprocamente, formando un ciclo completo. Ad esempio:

    • La pagina tedesca (de) deve puntare alle versioni in inglese (en), francese (fr) e altre lingue;
    • Le pagine in inglese e francese devono anche puntare indietro alla pagina tedesca.

    Necessità:

    • Trasferimento di autorità: Il collegamento circolare aiuta i motori di ricerca a capire che le pagine multilingue sono equivalenti, evitando dispersione di autorità.
    • Prevenzione dei contenuti duplicati: Se c’è un collegamento unilaterale (ad esempio, la pagina inglese punta a quella tedesca, ma quella tedesca non punta a quella inglese), i motori possono considerare le pagine contenuti separati e penalizzarli per duplicazione.

    Eccezioni:

    • Le pagine in una sola lingua (ad esempio solo inglese) non necessitano di collegamento circolare, ma devono avere autoreferenziazione.
    • Le varianti regionali (come en-US e en-GB) devono puntarsi reciprocamente, ma non è necessario collegarle ad altre lingue.

    Scenari comuni di rottura del collegamento e conseguenze

    Scenario 1: Aggiunta di nuove versioni linguistiche senza aggiornare le pagine vecchie

    • Esempio: Un sito di notizie ha aggiunto una pagina giapponese (ja), ma le pagine originali in inglese e cinese non hanno aggiunto link hreflang verso la pagina giapponese.
    • Conseguenza: La pagina giapponese diventa una “pagina isolata” e i motori di ricerca indicizzano solo le altre pagine collegate.

    Scenario 2: Difetto nella logica del plugin CMS

    • Esempio: Plugin multilanguage di WordPress (come Polylang) durante la generazione di massa delle pagine non aggiungono automaticamente link per le nuove lingue nei contenuti vecchi.
    • Conseguenza: Alcune pagine perdono il collegamento e gli utenti non riescono a passare alla nuova versione linguistica dai contenuti vecchi.

    Scenario 3: Parametri dinamici che causano fallimenti nel collegamento

    • Esempio: La URL della pagina spagnola contiene parametri (ad esempio ?lang=es), ma le altre pagine non li includono negli hreflang.
    • Conseguenza: I motori di ricerca considerano la pagina con parametro es come contenuto non correlato alle altre versioni linguistiche.

    Strumenti di controllo e metodi di verifica

    Strumento 1: Screaming Frog

    • Nel risultato della scansione, vai alla scheda “Hreflang” e filtra per “Missing Reciprocal Links” (link reciproci mancanti).
    • Azione: Esporta la lista degli errori per localizzare i gruppi di URL senza collegamento circolare.

    Strumento 2: Sitebulb

    • Nel rapporto “Audit SEO Internazionale”, controlla l’avviso “Unreciprocated hreflang links” che mostra pagine interrotte e lingue mancanti.

    Strumento 3: DeepCrawl

    • Configura regole personalizzate per monitorare i collegamenti tra pagine multilingue e ricevere rapporti settimanali automatici su problemi di link interrotti.

    Soluzioni e passaggi pratici

    Soluzione 1: Correzione in massa tramite plugin CMS (esempio Shopify)

    Entra nelle impostazioni del plugin multilingue (come Langify) e attiva l’opzione “Associa automaticamente tutte le versioni linguistiche”.

    Nelle “Impostazioni del template”, assicurati che la logica del tag hreflang includa un ciclo che attraversi tutte le versioni linguistiche:

    {% for language in shop.languages %}
    <link rel="alternate" hreflang="{{ language.iso_code }}" href="{{ canonical_url | replace: shop.domain, language.domain }}" />
    {% endfor %}

    Soluzione 2: Correzione manuale del codice (sito statico)

    Crea un elenco di associazioni per ogni versione linguistica (ad esempio un file Excel), elencando tutti i gruppi di URL che devono essere collegati tra loro.

    Aggiungi i tag nella pagina secondo l’elenco, ad esempio:


    <link rel="alternate" hreflang="en" href="https://example.com/en/page" />
    <link rel="alternate" hreflang="de" href="https://example.com/de/page" />
    <link rel="alternate" hreflang="fr" href="https://example.com/fr/page" />

    Sincronizza anche i tag hreflang nelle pagine in tedesco e francese per assicurarti che contengano i link alla pagina in inglese.

    Soluzione 3: Automazione lato server (ad esempio Nginx)

    Genera dinamicamente i tag hreflang tramite proxy inverso e regole di mapping:

    location / {
    add_header Link "<https://$host/en$uri>; rel=alternate; hreflang=en";
    add_header Link "<https://$host/de$uri>; rel=alternate; hreflang=de";
    }

    Conflitti con i tag Canonical

    Ad esempio, se la pagina di un prodotto in tedesco ha un tag Canonical che punta alla pagina principale in inglese, i motori di ricerca considereranno la pagina tedesca come una copia di quella inglese e non la mostreranno agli utenti di lingua tedesca.

    Il problema più comune è che molti sistemi CMS impostano per default tutte le versioni linguistiche con Canonical che punta alla pagina principale della lingua principale (ad esempio x-default), impedendo così che le altre pagine linguistiche vengano indicizzate separatamente.

    Principio di conflitto e regole di priorità

    Ordine di priorità seguito dai motori di ricerca nel trattare i tag hreflang e Canonical:

    Canonical ha priorità: se la pagina A ha un Canonical che punta alla pagina B, i motori di ricerca considereranno A come una copia di B, anche se A ha una dichiarazione hreflang, questa verrà ignorata.

    Situazioni in cui hreflang non funziona:

    1. La pagina in francese ha un Canonical che punta alla pagina in inglese → la pagina in francese non verrà mostrata agli utenti francesi.
    2. Le pagine multilingua hanno un Canonical unificato che punta alla pagina principale → tutte le versioni linguistiche sono considerate contenuti duplicati.

    Regola di eccezione:

    • Se il tag Canonical punta a se stesso (cioè <link rel="canonical" href="URL della pagina corrente"/>), hreflang funzionerà correttamente.

    Scenari tipici di errore e conseguenze

    Errore 1: Conflitto nella configurazione predefinita dei plugin multilingua

    • Esempio: Il plugin Yoast SEO di WordPress per impostazione predefinita fa sì che il tag Canonical delle pagine multilingua punti alla pagina nella lingua principale. Ad esempio, la pagina in tedesco avrà il tag Canonical così: <link rel="canonical" href="https://example.com/en/page"/>.
    • Conseguenza: La pagina in tedesco viene considerata una copia della pagina in inglese, quindi non appare nei risultati di ricerca in tedesco, causando una perdita di traffico superiore al 50%.

    Errore 2: Interferenza dei parametri dinamici

    • Esempio: URL con parametri (come example.com/page?lang=de) hanno il Canonical che punta alla versione senza parametri (example.com/page), ma quest’ultima non è configurata con hreflang.
    • Conseguenza: La pagina in tedesco con parametri non viene indicizzata, e gli utenti vedono solo la pagina nella lingua predefinita durante la ricerca.

    Errore 3: Varianti regionali non dichiarate separatamente

    • Esempio: La pagina en-US ha il Canonical che punta alla pagina inglese generale (en), facendo sì che i motori di ricerca considerino la pagina in inglese americano senza valore indipendente.
    • Conseguenza: Gli utenti negli USA possono essere indirizzati alla pagina en (es. inglese britannico), riducendo l’esperienza localizzata.

    Strumenti di rilevamento e metodi di diagnostica

    Strumento 1: Google Search Console

    • Accedi al rapporto “Copertura”, filtra nella scheda “Esclusi” per “Pagine duplicate” o “Inviate ma non indicizzate” e verifica se ci sono fallimenti di hreflang causati da conflitti di Canonical.

    Strumento 2: Screaming Frog

    • Dopo aver eseguito la scansione del sito, filtra le pagine che contengono sia hreflang che Canonical e verifica se il Canonical punta a un’altra pagina (non a sé stessa).
    • Esporta i dati e filtra con la condizione: Canonical != Self-URL.

    Strumento 3: DeepCrawl

    • Imposta regole di avviso personalizzate: attiva un avviso quando hreflang e destinazione Canonical non corrispondono.

    Soluzioni e passaggi pratici

    Soluzione 1: Correzione tramite plugin CMS (esempio Yoast SEO)

    1. Vai nelle impostazioni multilingua e disattiva l’opzione “Canonical unificato che punta alla lingua principale”.
    2. In “Impostazioni avanzate”, abilita “Genera tag Canonical indipendenti per ogni versione linguistica”.

    Soluzione 2: Correzione manuale del codice

    Nella sezione <head>, assicurati che il tag Canonical punti al proprio URL, ad esempio:

    <!-- La pagina tedesca con Canonical che punta a sé stessa -->
    <link rel="canonical" href="https://example.com/de/page" />

    Soluzione 3: Configurazione lato server (es. Nginx)

    Genera dinamicamente il tag Canonical corrispondente alla versione linguistica corrente:

    location /de/ {
    add_header Link "<https://example.com/de/$uri>; rel=canonical";
    }

    Errori del server o mancato supporto alle richieste HTTP

    Ad esempio, pagine generate dinamicamente che non caricano l’HTML completo a causa del timeout del server, causando la mancanza del tag hreflang nel <head>;

    oppure pagine mobili che restituiscono un redirect temporaneo 302 anziché il codice 200, per cui i motori di ricerca potrebbero ignorare i tag;

    alcune regole CDN o firewall bloccano le richieste dei crawler, impedendo la lettura delle pagine in determinate lingue regionali.

    Tipi di errori server e impatti

    Codici di stato chiave e relative conseguenze:
    404 Not Found

    • Scenario: Una pagina in francese è referenziata da pagine in altre lingue tramite hreflang, ma l’URL reale è stato eliminato o il percorso è errato.
    • Conseguenze: I motori di ricerca considerano l’associazione hreflang non valida, la pagina francese non viene indicizzata e ciò riduce la credibilità delle pagine in altre lingue.

    500 Internal Error

    • Scenario: Il server va in crash e i tag hreflang generati dinamicamente non vengono caricati.
    • Conseguenze: La pagina restituisce un errore 500, hreflang non funziona completamente, il che può portare a un blocco temporaneo del sito da parte dei crawler.

    302 Temporary Redirect

    • Scenario: La pagina mobile reindirizza temporaneamente all’URL della versione desktop, ma non passa i tag hreflang.
    • Conseguenze: Il motore di ricerca può indicizzare solo il hreflang della pagina desktop, ignorando la versione mobile nella lingua corrispondente.

    Problemi di caricamento delle pagine dinamiche

    Difetti nella resa JavaScript

    • Esempio: Applicazioni SPA (Single Page Application) in React/Vue inseriscono dinamicamente i tag hreflang tramite JS ma senza prerendering.
    • Conseguenze: I motori di ricerca potrebbero non eseguire il JS, causando la mancata lettura dei tag hreflang.

    Interferenze nella configurazione CDN/cache

    • Esempio: La configurazione CDN ignora hreflang nel <head> o memorizza nella cache versioni di lingua errate.
    • Conseguenze: Gli utenti possono ricevere versioni di lingua diverse allo stesso URL, causando confusione nelle associazioni hreflang.

    Timeout e problemi di prestazioni del server

    • Esempio: Il tempo di caricamento della pagina è troppo lungo (>5 secondi), il motore di ricerca interrompe la scansione e non legge completamente i tag hreflang.
    • Conseguenze: Alcune associazioni linguistiche vengono perse, influenzando soprattutto siti multilingue di grandi dimensioni.

    Strumenti di rilevamento e metodi di diagnostica

    Google Search Console

    • Utilizzare il rapporto di copertura per controllare le pagine escluse per errori server (404/500), filtrando gli URL multilingue.

    Screaming Frog

    1. Abilitare l’opzione “Controlla hreflang” nelle impostazioni di scansione.
    2. Filtrare i risultati per errori server (4xx, 5xx) per visualizzare le pagine hreflang correlate.

    Analisi dei log del server

    • Filtrare i log del server (es. access.log di Nginx) per le richieste dei crawler (User-Agent contenente Googlebot) e individuare URL che restituiscono errori frequenti.

    Soluzioni e passaggi pratici

    Correzione degli errori server

    Problema 404

    • Verificare che tutti gli URL indicati nei tag hreflang esistano e correggere i link interrotti.
    • Se la pagina è stata rimossa, rimuovere il link hreflang corrispondente dalle altre versioni linguistiche.

    Problema 500

    • Ottimizzare le risorse del server (es. aumentare la memoria, pool di connessioni al database) per ridurre il rischio di crash.
    • Configurare monitoraggio e allarmi (es. New Relic) per individuare e risolvere i guasti in tempo reale.

    Ottimizzazione delle pagine dinamiche

    Soluzione di prerendering

    • Utilizzare framework SSR come Next.js o Nuxt.js per garantire che i tag hreflang siano presenti nel caricamento HTML iniziale.
    • Configurare strumenti di prerendering (es. Prerender.io) per fornire versioni statiche ai crawler.

    Correzione configurazione CDN

    1. Configurare nel CDN i percorsi linguistici (es. /de/, /fr/) come “no cache” o con breve tempo di cache (es. 1 ora).
    2. Assicurarsi che il CDN trasmetta completamente il contenuto del <head> senza modificare l’HTML.

    Ottimizzazione delle prestazioni

    • Comprimere le risorse della pagina (immagini, CSS/JS) per ridurre il tempo di caricamento a meno di 3 secondi.
    • Utilizzare strumenti come Google Lighthouse per rilevare e correggere problemi di rendering bloccante.

    Contenuti duplicati causati da parametri dinamici

    L’uso eccessivo di parametri dinamici (es. ?utm_source=ads o ?sessionid=123) negli URL è un “nemico nascosto” che causa problemi di contenuti duplicati nei siti multilingue.

    Ad esempio, una pagina in spagnolo può generare più URL con parametri diversi (es. /es/page?ref=facebook e /es/page?ref=email), che i motori di ricerca interpretano come pagine distinte, causando duplicazione dei contenuti.

    Impatto e classificazione dei parametri

    Parametri da mantenere obbligatoriamente:

    1. Parametri di paginazione (es. ?page=2): usati per distinguere differenti sezioni di contenuto, devono essere mantenuti ma normalizzati (ad esempio tramite rel="canonical" che punta alla homepage).
    2. Parametri lingua/area geografica (es. ?lang=de): se l’URL non distingue la lingua tramite il percorso (es. /de/), tali parametri devono essere mantenuti e coerenti con hreflang.

    Parametri da rimuovere obbligatoriamente:

    1. Parametri di tracciamento (es. ?utm_source, ?ref=social): non modificano il contenuto della pagina, devono essere rimossi da hreflang.
    2. ID di sessione (es. ?sessionid=123): parametri di tracciamento del comportamento utente, possono generare molti URL duplicati.

    Scenari di errore comuni e conseguenze

    Errore 1: parametri non normalizzati

    • Esempio: Una pagina in francese esiste in molteplici versioni con parametri diversi (es. /fr/page?utm=ads e /fr/page?utm=email), e tutte sono dichiarate come pagine indipendenti tramite hreflang.
    • Conseguenza: I motori di ricerca indicizzano più versioni duplicate, dispersendo il valore SEO e abbassando il ranking della pagina in francese.

    Errore 2: mancata inclusione dei parametri in hreflang

    • Esempio: La pagina in inglese punta con hreflang a /de/page, mentre il vero URL tedesco è /de/page?lang=de, causando rottura del collegamento.
    • Conseguenza: La pagina tedesca viene considerata contenuto indipendente e non si associa alla pagina inglese per la lingua multipla.

    Errore 3: parametri di paginazione interferiscono con il contenuto principale

    • Esempio: La pagina della lista prodotti /es/products?page=2 non punta con hreflang alla pagina principale /es/products.
    • Conseguenza: La paginazione può essere interpretata come una pagina linguistica indipendente, competendo con la pagina principale per il traffico.

    Metodi di verifica con strumenti

    Google Search Console:

    • Accedi al report “Copertura”, filtra gli URL “Inviati ma non indicizzati” e verifica se vengono esclusi a causa di duplicati con parametri.

    Screaming Frog:

    1. Durante la scansione del sito, abilita l’opzione “Ignora parametri URL” e confronta la somiglianza dei contenuti tra pagine con e senza parametri.
    2. Filtra i tag hreflang e verifica se ci sono URL con parametri non correttamente associati.

    Matching con espressioni regolari:

    • Nei tool di analisi log (es. ELK Stack), filtra le richieste crawler contenenti parametri specifici (es. utm_*) usando regex e conta le occorrenze di crawl duplicati.

    Soluzioni e passaggi pratici

    Soluzione 1: normalizzazione parametri (configurazione server)

    Esempio regola Apache:

    RewriteCond %{QUERY_STRING} ^utm_
    RewriteRule ^(.*)$ /$1? [R=301,L]
    • Funzione: rimuove automaticamente tutti i parametri utm_ e fa redirect 301 all’URL senza parametri.

    Soluzione 2: collegamento tra hreflang e Canonical

    Usa solo URL senza parametri in hreflang (es. /de/page).

    Aggiungi tag canonical per le URL con parametri che puntano alla versione senza parametri:

    <link rel="canonical" href="https://example.com/de/page" />

    Soluzione 3: gestione parametri in Google Search Console

    1. Accedi alle impostazioni “Parametri URL” e segna parametri come utm_, sessionid come “Nessun effetto sul contenuto della pagina”.
    2. Segna parametri di paginazione (es. page) come “Paginazione” per aiutare i motori a comprendere la loro funzione.

    L’ottimizzazione hreflang per siti multilingua non è mai “una configurazione una tantum”.
    Spesso la cura dei dettagli parte dall’evitare questi piccoli errori tecnici.

    滚动至顶部