Веб-разработка

Мультиязычный сайт: как не сломать SEO на hreflang

Мультиязычный сайт: как не сломать SEO на hreflang

Мультиязычный сайт — это не перевод меню и кнопка «EN» в шапке. Hreflang — атрибут в коде страницы, который сообщает поиску: вот эта страница на русском, а вот её пара на английском. Canonical — указание основного адреса страницы, чтобы поиск не считал похожие адреса разными документами. Без этих двух вещей /ru/uslugi/ и /en/services/ выглядят для поиска как два конкурента, а не как одна услуга на двух языках.

Ниже — порядок настройки и проверки до того, как поиск начнёт индексировать вторую версию: как развести языки по адресам, как разметить пары страниц и что смотреть перед запуском рекламы. Разработка под ключ: сайт в СПб; контент под нейровыдачу: SEO-контент для LLM.

Почему перевод без разметки роняет обе версии

Обычно история одинаковая. Компания заказывает перевод текстов, разработчик добавляет переключатель языков, и вторая версия уезжает в индекс как есть. Через месяц английская страница показывается в русской выдаче, русская — в английской, а часть адресов поиск выкидывает как дубли. Переводчик здесь не виноват: поиску просто не сказали, какие адреса образуют пару.

Карта языков и URL

  • Один URL — один язык; переключатель ведёт на эквивалентную страницу, не на главную другого языка.
  • Коды hreflang по ISO: ru, en, en-US — без опечаток.
  • Страницы без перевода — либо noindex, либо осознанный fallback, не пустая заглушка в индексе.
  • Sitemap отдельно или с hreflang внутри — но карта симметрична.

Три способа развести языки по адресам

Структура адресовКогда подходитЧто усложняет
Папки site.ru/en/Одна система управления сайтом и одна команда на все языкиВсе языки живут на одном хостинге и падают вместе
Поддомены en.site.ruРазные команды или разные серверы по регионамКаждый поддомен подтверждается в Вебмастере отдельно
Отдельные домены site.deСвоё юридическое лицо или сильный местный брендАвторитет каждого домена придётся наращивать с нуля

Правила разметки hreflang

  1. На каждой языковой версии — полный набор alternate на все языки + self.
  2. Добавить x-default на версию по умолчанию.
  3. Разметка в head или в sitemap — один канонический способ на проект.
  4. Проверить в Вебмастере / Search Console отчёт по hreflang.
  5. После редизайна — прогнать карту заново: новые slug часто рвут пары.

Где ломается canonical

Canonical на главную с других языковых страниц — классическая ошибка после автоперевода. Параметры ?lang= без каноникала на чистый URL дают дубли. Hreflang на 404 или редирект — поиск игнорирует всю группу.

Зачёркнутое обещание «Перевели сайт — пришёл зарубежный трафик» и три измеримых поля: взаимные пары языков, каноникал каждой версии на себя, выборка из 50 пар URL до запуска.
Сам факт перевода проверить нельзя. Взаимность пар, каноникал и объём выборки — можно.

Проверка перед запуском

  • 50 пар URL — выборочно: hreflang взаимный.
  • Canonical каждой страницы — на себя.
  • Языковой переключатель не создаёт циклических редиректов.
  • Robots не закрывает одну версию целиком без причины.

Четыре узла, где ломается мультиязычность

Четыре узла проверки
Пары адресовКаждая языковая версия ссылается на все остальные и на себя. Односторонняя ссылка — и поиск отбрасывает всю группу целиком.
Основной адрес страницыCanonical каждой версии указывает на неё саму, а не на главную и не на русский вариант. Ошибка в шаблоне повторяется на всём сайте сразу.
Переключатель языковКнопка «EN» ведёт на ту же страницу на другом языке, а не на главную. Иначе и человек, и робот теряют место, где были.
Отчёты вебмастераВ Яндекс.Вебмастере и Google Search Console видно, какие пары поиск принял, а какие отбросил. Смотреть после каждого релиза, где менялись адреса.

ФактМультиязычность без hreflang — технический долг: чинить дороже после просадки, чем заложить карту при разработке.

Частые вопросы

Зачем нужен hreflang?

Атрибут hreflang говорит поиску, какая URL — версия для какого языка и региона. Без него русская и английская страница могут конкурировать друг с другом в выдаче.

Что такое x-default?

Версия по умолчанию для пользователей, чей язык не перечислен в hreflang. Обычно — главная или языковой селектор, не случайная копия.

Каноникал и hreflang — как связаны?

Каждая языковая версия указывает canonical на себя, а hreflang — на все альтернативы включая себя. Каноникал на другой язык ломает логику.

Поддомены или папки /en/?

Оба варианта работают, если карта hreflang полная и симметричная. Папки проще на одном CMS; поддомены — если команды и хостинг разделены.

← Назад к разделу «Веб-разработка»