Настройка SEO многоязычного сайта на Hugo

Что делать с `canonical`, `lang` и `hreflang`

Содержимое страницы

Локализация вашего Hugo сайта может улучшить ваш рейтинг в Google и Bing, но только если переведенный контент высокого качества, локализован и правильно структурирован для мультиязычного SEO.

Локализованные страницы (не просто переведенные, а культурно адаптированные) часто снижают уровень отказов, увеличивают время пребывания на сайте и улучшают конверсии. Это сигналы поведения пользователей, которые могут положительно повлиять на ваши SEO-рейтинги.

много различных флагов стран перед административным зданием

Hugo — это генератор статических сайтов. В сущности он преобразует файлы Markdown в HTML-страницы очень гибким способом и работает довольно быстро. Для подробностей см. здесь Справочник Hugo, вы также можете изучить список статей, связанных с Hugo, внизу этой страницы.

Основной вопрос: Следует ли вам переводить для SEO?

Сценарий Перевод помогает SEO? Примечания
Человеческий перевод + локализация + структура SEO ✅ Да, сильная польза Лучший вариант
Высококачественный AI-перевод + редактирование + hreflang ✅ Возможно Может ранжироваться, если качество хорошее
Только автоматический перевод + канонический ❌ Нет Не будет ранжироваться — используется только для UX
Автоматический перевод + отсутствие канонического или hreflang ⚠️ Риск Может вызвать штрафы за дублирование

Требуемый HTML для сайтов с буквальными (автоматизированными) переводами

  1. Каждая страница должна иметь атрибут lang в теге html, например:
<html lang="de">
  1. Каждая страница должна содержать список альтернативных ссылок на эту страницу на других языках, например, HTML ниже описывает альтернативные URL для такой же или похожей страницы на трех языках:
<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. Каждая переведенная страница сайта должна указывать канонический URL для этой страницы (тот, который на первом языке или языке оригинала), например:
<link rel="canonical" href="https://www.glukhov.org/post/2025/10/multi-language-website-seo-with-hugo/">

Это посоветует поисковым системам пропустить индексацию неканонических страниц. Некоторые поисковые системы, конечно, могут игнорировать это и индексировать все страницы.

Для профессионально / вручную переведенной веб-страницы

Отсутствие указания <link rel="canonical" может вызвать штрафы поисковых систем за дублирование. Но если вы переводите страницы сайта вручную или заказываете профессиональный перевод, можно надеяться, что поисковые системы примут вашу неканоническую страницу как оригинальную.

Шаблоны Hugo для локализованных сайтов

Мы должны помнить, что тема сайта Hugo может поддерживать все это уже.

<html lang=…

Откройте файл layouts/_default/baseof.html либо в папке вашего сайта Hugo, либо в папке вашей темы, и убедитесь, что там есть что-то вроде:

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

Теперь откройте файл layouts/partials/seo-localise.html и поместите туда этот HTML-шаблон:

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

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

{{ end }}

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

<!-- Hreflang Alternate Tags -->
{{ range .AllTranslations }}
    <link rel="alternate" hreflang="{{ .Lang }}" href="{{ .Permalink }}">
{{ end }}

Если вы переводите сайт вручную, этот код может выглядеть так:

{{ $canonical := .Permalink }}

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

<!-- Hreflang Alternate Tags -->
{{ range .AllTranslations }}
    <link rel="alternate" hreflang="{{ .Lang }}" href="{{ .Permalink }}">
{{ end }}

config.toml

В вашем config.toml убедитесь, что вы установили:

# настройка языков на вашем сайте

defaultContentLanguage = "en"

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

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

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

Настройте вышеуказанное в соответствии с языками вашего сайта.

Теперь выполните команду hugo для генерации сайта, затем hugo serve для запуска хоста разработчика веб-сайта, откройте сайт и просмотрите исходный код страницы. Убедитесь, что все теги <html> и <link> имеют правильные атрибуты.

Полезные ссылки: Генератор статических сайтов Hugo

Полезные ссылки: Markdown