Configurare l'ottimizzazione SEO per un sito web multilingue con Hugo

Cosa fare con `canonical`, `lang` e `hreflang`

Indice

Tradurre il tuo sito web Hugo può migliorare il tuo posizionamento su Google e Bing - ma solo se il contenuto tradotto è di alta qualità, localizzato e strutturato correttamente per l’ottimizzazione SEO multilingue.

Le pagine localizzate (non solo tradotte, ma adattate culturalmente) riducono spesso il tasso di abbandono, aumentano il tempo trascorso sul sito e migliorano le conversioni. Questi sono segnali di comportamento degli utenti che possono positivamente influenzare il tuo posizionamento SEO.

molte bandiere di diversi paesi davanti a un edificio amministrativo

Hugo è un generatore di siti web statici. In sostanza, converte i file Markdown in pagine HTML in modo molto configurabile e è abbastanza veloce. Per i dettagli, consulta qui Hugo Cheat Sheet, puoi anche esplorare l’elenco degli articoli relativi a Hugo in fondo a questa pagina.

Domanda principale: Dovresti tradurre per l’ottimizzazione SEO?

Scenario La traduzione aiuta l’ottimizzazione SEO? Note
Traduzione umana + localizzata + strutturata per SEO ✅ Sì, beneficio forte Opzione migliore
Traduzione di alta qualità con AI + editing + hreflang ✅ Potenziale Può posizionarsi se la qualità è buona
Traduzione automatica solo + canonical ❌ No Non posizionerà — utilizzato solo per l’esperienza utente
Traduzione automatica + nessun canonical o hreflang ⚠️ Rischio Potrebbe scatenare penalità per duplicati

HTML richiesto per i siti con traduzioni letterali (automatizzate)

  1. Ogni pagina deve avere l’attributo lang nel tag html, ad esempio:
<html lang="de">
  1. Ogni pagina deve avere un elenco di collegamenti alternativi per questa pagina in altre lingue, ad esempio, l’HTML seguente descrive gli URL alternativi per la stessa o una pagina simile in tre lingue:
<link rel="alternate" hreflang="en" href="https://www.glukhov.org/post/2025/10/multi-language-website-seo-with-hugo/">
<link rel="alternate" hreflang="de" href="https://www.glukhov.org/de/post/2025/10/multi-language-website-seo-with-hugo/">
<link rel="alternate" hreflang="ru" href="https://www.glukhov.org/ru/post/2025/10/multi-language-website-seo-with-hugo/">
  1. Ogni pagina del sito web tradotta deve specificare l’URL canonico per questa pagina (quello della prima o della lingua originale), ad esempio:
<link rel="canonical" href="https://www.glukhov.org/post/2025/10/multi-language-website-seo-with-hugo/">

Questo indicherà ai motori di ricerca di ignorare l’indicizzazione delle pagine non canoniche. Alcuni motori di ricerca potranno comunque ignorare questa indicazione e indicizzare tutte le pagine.

Per le pagine web tradotte professionalmente / manualmente

Non specificare <link rel="canonical" può causare ai motori di ricerca di applicare penalità per duplicati. Ma se traduci manualmente le pagine del tuo sito web o ordini una traduzione professionale, puoi sperare che i motori di ricerca accettino la tua pagina non canonica come originale.

Template Hugo per siti web localizzati

Dobbiamo tenere presente che il tema del sito web Hugo potrebbe già supportare tutto questo.

<html lang=…

Apri il file layouts/_default/baseof.html nel tuo cartella del sito web Hugo o nella cartella del tema e assicurati che ci sia qualcosa come:

<!DOCTYPE html>
<html class="no-js" lang="{{ .Site.Language.Lang }}">
<head>
...
	{{ partial "seo-localise.html" . }}	
</head>
...

Ora apri il file layouts/partials/seo-localise.html e metti il seguente codice HTML:

{{ $defaultLang := .Site.Params.defaultContentLanguage | default "en" }}
{{ $canonical := .Permalink }}

{{ if .IsTranslated }}
  {{ $original := .Translations.GetByLang $defaultLang }}
  {{ if $original }}
    {{ $canonical = $original.Permalink }}
  {{ end }}

{{ end }}

<!-- URL canonico -->
<link rel="canonical" href="{{ $canonical }}">

<!-- Tag alternativi hreflang -->
{{ range .AllTranslations }}
    <link rel="alternate" hreflang="{{ .Lang }}" href="{{ .Permalink }}">
{{ end }}

Se traduci manualmente il tuo sito web, questo codice potrebbe apparire così:

{{ $canonical := .Permalink }}

<!-- URL canonico -->
<link rel="canonical" href="{{ $canonical }}">

<!-- Tag alternativi hreflang -->
{{ range .AllTranslations }}
    <link rel="alternate" hreflang="{{ .Lang }}" href="{{ .Permalink }}">
{{ end }}

config.toml

Nel tuo config.toml, assicurati di impostare:

# configura le lingue sul tuo sito web

defaultContentLanguage = "en"

[languages]
  [languages.en]
    weight = 1
    languageName = "Inglese"

  [languages.es]
    weight = 2
    languageName = "Español"

  [languages.fr]
    weight = 3
    languageName = "Français"

Adatta quanto sopra in base alle lingue del tuo sito.

Ora esegui il comando hugo per generare il sito web, quindi hugo serve per avviare l’host del sito web in sviluppo, apri il sito web e visualizza il codice sorgente di una pagina. Assicurati che tutti i tag <html> e <link> abbiano gli attributi corretti.