Перейти к содержанию
Innovialabs

Как настроить hreflang и избежать типичных ошибок

Практика3 мин

Коротко

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

Что делает hreflang

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

Разметку можно разместить одним из трёх способов. Выберите один и не смешивайте их без необходимости.

Способ 1: теги в HTML

В <head> каждой версии страницы перечисляются все версии, включая её саму:

<link rel="alternate" hreflang="ru" href="https://site.com/ru/pricing/" />
<link rel="alternate" hreflang="en" href="https://site.com/en/pricing/" />
<link rel="alternate" hreflang="uz" href="https://site.com/uz/pricing/" />
<link rel="alternate" hreflang="x-default" href="https://site.com/en/pricing/" />

Этот блок одинаков на всех трёх страницах. Самый наглядный вариант для сайтов с небольшим числом языков.

Способ 2: HTTP-заголовок

Подходит для файлов без HTML, например PDF:

Link: <https://site.com/ru/guide.pdf>; rel="alternate"; hreflang="ru",
      <https://site.com/en/guide.pdf>; rel="alternate"; hreflang="en"

Способ 3: sitemap

Удобно для больших сайтов: разметка не утяжеляет страницы и управляется централизованно.

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>https://site.com/ru/pricing/</loc>
    <xhtml:link rel="alternate" hreflang="ru" href="https://site.com/ru/pricing/"/>
    <xhtml:link rel="alternate" hreflang="en" href="https://site.com/en/pricing/"/>
    <xhtml:link rel="alternate" hreflang="uz" href="https://site.com/uz/pricing/"/>
  </url>
  <!-- такой же <url> для /en/ и /uz/ -->
</urlset>

Коды языков и регионов

  • Язык — код ISO 639-1: ru, en, uz.
  • Регион (необязательно) — код страны ISO 3166-1 alpha-2 после дефиса: ru-UZ, en-GB.
  • Регион без языка не допускается: hreflang="UZ" — ошибка.
  • Порядок важен: сначала язык, потом страна. uz-RU означает «узбекский для России», а не наоборот.
  • Для письменности можно указать скрипт: uz-Latn, uz-Cyrl, если у вас обе версии.

x-default

x-default — версия для всех, кому не подошла ни одна из перечисленных. Обычно это английская страница или страница выбора языка. Он не обязателен, но полезен, если у вас есть такой «запасной» вариант.

Чек-лист правильной настройки

  • Взаимность. Если страница A ссылается на B, то B обязана ссылаться на A. Без обратной ссылки пара игнорируется.
  • Ссылка на себя. Каждая страница включает себя в список.
  • Абсолютные URL с протоколом: https://site.com/en/, а не /en/.
  • Канонические адреса. URL в hreflang должны совпадать с canonical этих страниц и отдавать код 200.
  • Соответствие страниц. Связываются переводы одной и той же страницы, а не все страницы с главной.

Типичные ошибки

ОшибкаПоследствие
Нет обратных ссылокСвязь не учитывается
hreflang="en-UK"Неверный код страны, правильно en-GB
Canonical всех версий указывает на однуПереводы выпадают из индекса
В hreflang URL с редиректом или 404Сигнал теряется
Разметка добавлена только на главнуюВнутренние страницы без связей
Разные наборы языков на разных версияхПротиворечивые сигналы

Как проверить

  • Откройте исходный код нескольких страниц каждой версии и сверьте наборы ссылок.
  • Используйте краулер сайта, который умеет проверять взаимность hreflang.
  • Смотрите отчёты по международному таргетингу и индексации в панелях вебмастера.

Подробная спецификация есть в документации Google.

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

Да, если версии — переводы одних и тех же страниц. Даже при двух языках разметка помогает поисковику не путать версии в выдаче.

Поможем с этим

Если хотите не разбираться самим, а получить результат — этим мы занимаемся каждый день.

Обсудить проект

Читайте также

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.