Live · status OK
Back to blog
SEO & AEO14 min

SEO multilingue e hreflang nella pratica: guida con esperienza 11 lingue

TL;DR

La SEO multilingue fallisce nel 70% dei casi per mancanza di hreflang reciproco o architettura URL incoerente. Stack 2026: URL con sottocartella /lang/ (no domini geografici salvo casi specifici), hreflang nei Metadata Next.js + sitemap, x-default per la lingua di fallback, traduzioni umane (non automatiche) sulle 50 pagine prioritarie, content adaptation per mercato. Il nostro sito optionweb.dev opera 11 lingue in produzione da 18 mesi.

Julien Daniel
ByJulien Daniel
Founder & CTO, OptionWeb
Share
Globo con frecce che collegano 11 bandiere di paesi per SEO multilingue

Il nostro sito optionweb.dev funziona in 11 lingue da 18 mesi — FR, NL, EN, DE, ES, IT, PT, SQ, AR, MK, TR. Questa messa in produzione ci ha fatto scoprire tutte le trappole della SEO multilingue che nessuna guida teorica menziona. Ecco il ritorno d'esperienza completo e la metodologia che applichiamo ora su tutti i progetti internazionali clienti in OptionWeb.

1. Architettura URL: sottocartella vs sottodominio vs ccTLD

Tre opzioni di architettura per un sito multilingue. La scelta iniziale impatta tutto il resto:

ArchitetturaEsempioVantaggiSvantaggi
Sottocartellasite.com/fr/, /en/1 dominio = equity condivisa, semplice da configurareNessun segnale geografico forte
Sottodominiofr.site.com, en.site.comConfigurazione DNS separabile, team localiEquity backlink parzialmente separata
ccTLDsite.fr, site.be, site.deSegnale geografico max, branding localeCosto domini + infrastruttura × N paesi

Raccomandazione 2026: sottocartella /lang/ per il 90% di PMI e aziende. È la nostra scelta su optionweb.dev. ccTLD solo se siete Amazon o IKEA.

2. Hreflang: la reciprocità non è negoziabile

Hreflang è il tag meta che dice a Google quale versione della pagina servire a quale utente secondo lingua/paese. Senza hreflang corretto, Google ranka una sola versione (generalmente EN) e ignora le altre = perdita massiva di traffico internazionale.

Regola assoluta: la reciprocità. Se /fr/ punta a /en/, allora /en/ deve puntare di ritorno a /fr/. Senza reciprocità, Google ignora TUTTI gli hreflang sulla pagina.

app/[lang]/page.tsxtsx
export async function generateMetadata({ params }: Props): Promise<Metadata> {
  const { lang } = params;

  return {
    title: t('home.title', { lng: lang }),
    alternates: {
      canonical: `https://optionweb.dev/${lang}`,
      languages: {
        'fr': 'https://optionweb.dev/fr',
        'nl': 'https://optionweb.dev/nl',
        'en': 'https://optionweb.dev/en',
        'de': 'https://optionweb.dev/de',
        'es': 'https://optionweb.dev/es',
        'it': 'https://optionweb.dev/it',
        'pt': 'https://optionweb.dev/pt',
        'sq': 'https://optionweb.dev/sq',
        'ar': 'https://optionweb.dev/ar',
        'mk': 'https://optionweb.dev/mk',
        'tr': 'https://optionweb.dev/tr',
        'x-default': 'https://optionweb.dev/en',
      },
    },
  };
}

Formato dei codici hreflang: ISO 639-1 (lingua, es: 'fr') OPPURE ISO 639-1 + ISO 3166-1 (lingua-paese, es: 'fr-BE'). Il formato lingua-paese mira a un mercato preciso. Usare solo la lingua basta nel 90% dei casi.

3. x-default e fallback di lingua

L'attributo x-default indica la versione da servire se la lingua dell'utente non è nella lista hreflang. È il vostro 'lifeguard' SEO: senza x-default, un utente giapponese che arriva sul vostro sito multilingue vede una pagina random secondo l'algoritmo Google.

Buona pratica: puntare x-default verso la lingua di fallback più universale (spesso EN), o verso una pagina di selezione lingua se ne avete una.

4. Sitemap multilingue o sub-sitemap

Due approcci secondo il volume:

  • Sitemap unica con hreflang xhtml:linkPer <5000 URL totali. Ogni URL elenca le sue varianti via xhtml:link. Pesante ma centralizzato.
  • Sub-sitemap per lingua + sitemap_indexPer >5000 URL. Una sitemap.xml per lingua (sitemap-fr.xml, sitemap-en.xml...), tutte referenziate in sitemap_index.xml.
app/sitemap.tsts
export const dynamic = 'force-static';

export default function sitemap(): MetadataRoute.Sitemap {
  const SUPPORTED_LANGS = ['fr','nl','en','de','es','it','pt','sq','ar','mk','tr'];
  const PAGES = ['', '/blog', '/services', '/contact'];

  const urls: MetadataRoute.Sitemap = [];

  for (const page of PAGES) {
    for (const lang of SUPPORTED_LANGS) {
      urls.push({
        url: `https://optionweb.dev/${lang}${page}`,
        lastModified: new Date(),
        alternates: {
          languages: Object.fromEntries(
            SUPPORTED_LANGS.map(l => [l, `https://optionweb.dev/${l}${page}`])
          ),
        },
      });
    }
  }

  return urls;
}

5. Language detection: auto-redirect o scelta utente

Quando un nuovo visitatore arriva sulla vostra root optionweb.dev/, avete 3 opzioni:

  1. Auto-redirect basato su header Accept-Language → /fr/, /en/, ecc. (UX rischiosa ma conversione max)
  2. Pagina di scelta lingua con cookie di memorizzazione (UX esplicita, penalizza conversione iniziale)
  3. Fallback x-default + banner 'Switch to your language?' (compromesso raccomandato)

La nostra scelta su optionweb.dev: opzione 3. La root / redirige verso /fr/ (lingua di default), con un banner discreto che propone di cambiare se Accept-Language indica un'altra lingua supportata. Cookie di memorizzazione per non riproporre lo switch ad ogni visita.

6. Strategia di traduzione: umana vs automatica

È la questione budgettaria principale della SEO multilingue. Tre opzioni secondo priorità business:

ApproccioCosto/paginaQualità SEOQuando usare
Traduzione umana professionale15-50 €EccellenteTop 20-50 pagine strategiche
Machine translation post-editato (MTPE)5-15 €BuonaPagine secondarie, blog voluminoso
Machine translation grezzo (DeepL, Google)0,001 €MediocreBozze, contenuto poco cruciale

Piano raccomandato per PMI esportatrice: top 30 pagine in traduzione umana professionale, blog in MTPE, resto in MT grezzo marcato noindex fino a edizione umana. Budget iniziale: 1 500-5 000 € per le top 30 pagine × 10 lingue.

7. Le 8 trappole del multilingue (vissute in produzione)

Lista degli errori che abbiamo fatto o visto su progetti clienti in 18 mesi:

  1. Hreflang non reciproco: Google ignora tutto. Audit mensile obbligatorio con Merkle Tool.
  2. Auto-redirect aggressivo basato su IP geografico: utente francese in vacanza vede turco.
  3. Traduzioni automatiche grezze su pagine prodotto: conversione che crolla, segnali engagement deboli, ranking in calo.
  4. x-default che punta alla lingua principale invece di EN: utenti fuori lingue supportate cadono su francese incomprensibile.
  5. Dimenticato di localizzare gli schemi JSON-LD: Organization in EN, Article in FR = incoerenza per Google.
  6. Pagine duplicate tra lingue molto vicine (PT-PT vs PT-BR, ES-ES vs ES-MX) senza hreflang granulare: cannibalizzazione.
  7. Sitemap non aggiornata dopo aggiunta di una nuova lingua: nuove URL mai indicizzate per 6 mesi.
  8. Cookie di lingua che impedisce ai robot crawler: Googlebot vede solo una lingua, le altre invisibili.

Strumenti di validazione e monitoraggio

  • Hreflang Tags Testing Tool (Merkle)Gratuito. Verifica reciprocità hreflang su qualsiasi URL. Da usare mensilmente.
  • Google Search Console > International TargetingSezione dedicata agli errori hreflang rilevati da Google. Notifica 'No return tags' classica.
  • Screaming Frog SEO SpiderCrawl completo del sito con audit hreflang batch. 159 £/anno versione pro. Indispensabile per siti grandi.
  • SistrixTracking ranking per paese/lingua. 100-300 €/mese. Per aziende con budget reporting internazionale.
  • Ahrefs Site AuditInclude audit hreflang. 99 $/mese minimo. Buono per audit one-shot prima del lancio multilingue.
  • Audit manuale curlGratuito. Verificare gli hreflang restituiti da ogni URL via 'curl -I' e ispezione HTML.
Tags#seo#hreflang#i18n#multilingual#international-seo#nextjs