Настройка hreflang: инструкция для мультиязычного сайта
Багатомовний сайт: hreflang і міжнародне SEO
ТехSEO

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

hreflang — это атрибут, который сообщает Google, на каком языке и для какого региона написана конкретная страница, чтобы поисковик показывал пользователю правильную языковую версию. Если у сайта несколько версий (например, украинская и русская), без hreflang Google может путать их между собой, склеивать или выдавать не ту версию в результатах. Настраивается тремя способами: тегом в разделе head, HTTP-заголовком или через файл sitemap.

Коротко

  • hreflang указывает Google язык и регион страницы. Это подсказка (hint), а не жёсткая команда — поисковик учитывает её вместе с другими сигналами.
  • Атрибут должен быть взаимным: если страница А ссылается на Б, то Б обязана ссылаться на А. Односторонние связи игнорируются.
  • Три способа внедрения: HTML-тег в head, HTTP-заголовок (для PDF и других не-HTML файлов), sitemap (удобно при большом числе URL).
  • Каждая страница должна ссылаться и сама на себя — это обязательный self-reference.
  • Для украинских сайтов с версиями RU и UA hreflang снимает риск каннибализации языков в выдаче.

Что такое hreflang и зачем он нужен

Атрибут rel=»alternate» hreflang=»x» появился, чтобы решить задачу: у страницы есть несколько языковых или региональных версий, и поисковик должен показать каждому пользователю подходящую. Житель Львова, ищущий на украинском, должен попадать на UA-страницу; пользователь, ищущий на русском, — на RU-версию того же материала.

Важно понимать: hreflang не поднимает позиции сам по себе. Он не про ранжирование, а про то, какую из уже ранжирующихся версий Google покажет конкретному пользователю. Косвенно это улучшает поведенческие метрики — человек сразу видит страницу на своём языке, реже возвращается в выдачу, — и это уже влияет на общий результат.

Частый вопрос — чем hreflang отличается от canonical. Canonical говорит «это одна и та же страница, индексируй вот эту». hreflang говорит «это разные, но эквивалентные версии для разных языков — индексируй все, но показывай нужную». Смешивать их нельзя: canonical языковой версии должен указывать на саму себя, а не на версию другого языка.

Синтаксис hreflang: примеры кода

Способ 1. Теги в разделе head

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

<link rel=»alternate» hreflang=»uk» href=»https://example.com/ua/hreflang» />

<link rel=»alternate» hreflang=»ru» href=»https://example.com/hreflang» />

<link rel=»alternate» hreflang=»en» href=»https://example.com/en/hreflang» />

<link rel=»alternate» hreflang=»x-default» href=»https://example.com/hreflang» />

Код языка — по стандарту ISO 639-1, при необходимости через дефис добавляется регион по ISO 3166-1 Alpha-2, например en-US или en-GB. Ключевая ловушка: украинский язык — это uk, а не ua. Код «ua» относится к стране Украина как региону, но не к языку. Русский — ru.

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

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

Для файлов без раздела head (PDF, документы) hreflang передаётся в HTTP-ответе сервера:

Link: <https://example.com/ua/file.pdf>; rel=»alternate»; hreflang=»uk»,

      <https://example.com/file.pdf>; rel=»alternate»; hreflang=»ru»

Способ 3. Через sitemap

При большом числе страниц удобнее описать связи в XML-карте сайта — тогда не нужно править head каждой страницы. Для одного URL перечисляются все его версии через элементы xhtml:link:

<url>

  <loc>https://example.com/hreflang</loc>

  <xhtml:link rel=»alternate» hreflang=»ru» href=»https://example.com/hreflang»/>

  <xhtml:link rel=»alternate» hreflang=»uk» href=»https://example.com/ua/hreflang»/>

  <xhtml:link rel=»alternate» hreflang=»en» href=»https://example.com/en/hreflang»/>

</url>

Выбирайте один способ и придерживайтесь его на всём сайте — дублировать hreflang в head и в sitemap одновременно не нужно.

Структура URL мультиязычного сайта: домены, папки, поддомены

До настройки hreflang нужно решить, как вообще разделять языки на уровне адресов. Есть четыре подхода — у каждого свой баланс между SEO-весом, стоимостью и удобством.

ПодходПримерПлюсыМинусы
Отдельные домены (ccTLD)site.ua / site.plМаксимальный геосигнал; чёткое разделениеДорого; вес доменов наращивается отдельно
Поддоменыuk.site.comГибкость; отдельная настройкаВес передаётся хуже, чем внутри домена
Подпапкиsite.com/ua/Весь ссылочный вес в одном домене; дёшевоОдин сервер/гео по умолчанию
Параметры URLsite.com/?lang=ukТехнически простоGoogle не рекомендует; хуже индексируется

Для большинства проектов, в том числе украинских, оптимальны подпапки: весь ссылочный вес накапливается на одном домене, а языки разделены прозрачно и дёшево. Отдельные домены оправданы, когда нужен сильный геотаргетинг под разные страны и есть бюджет вести несколько сайтов. Параметров URL для языков лучше избегать.

Особый случай Украины: RU и UA на одном сайте

Украинский рынок почти всегда двуязычный: одну и ту же услугу ищут и на украинском, и на русском. Логично держать обе версии — но именно здесь возникает каннибализация языков. Если RU- и UA-версии живут по одному URL (или Google не понимает, что это языковые пары), они начинают конкурировать друг с другом за одни запросы: поисковик не знает, какую показывать, и просаживает обе.

Правильная связка для двуязычного сайта: (1) у каждой версии — свой отдельный URL (например, RU в корне, UA в папке /ua/); (2) взаимный hreflang между парой uk ↔ ru; (3) self-canonical у каждой версии; (4) переведён весь контент, а не только меню. Тогда Google видит две эквивалентные страницы под разные языки и перестаёт их путать. Подробнее о самой проблеме конкуренции страниц — в материале про дубли и каннибализацию.

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

  • Код «ua» вместо «uk». Самая частая ошибка на украинских сайтах: для украинского языка нужен uk.
  • Нет обратной ссылки. Страница А указывает на Б, а Б на А — нет. Google игнорирует такую одностороннюю связь целиком.
  • Нет self-reference. Страница не перечисляет саму себя среди версий — набор hreflang считается неполным.
  • hreflang на неканонические URL. Ссылки ведут на редиректы, страницы с параметрами или noindex вместо чистых канонических адресов.
  • Конфликт с canonical. canonical языковой версии указывает на версию другого языка — тогда hreflang «ломается».
  • Относительные URL. В href нужны абсолютные адреса с протоколом https, а не /page.
  • Несогласованные пары. На разных страницах кластера перечислены разные наборы версий — связи рвутся.

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

После внедрения обязательно проверьте разметку — ошибки в hreflang почти всегда «тихие» и не видны глазом. Что использовать:

  • Google Search Console — отслеживает ошибки индексации и покрытия языковых версий; сюда же приходят предупреждения о проблемах разметки. Как её подключить и читать отчёты — в отдельной инструкции по Search Console.
  • Валидаторы hreflang — онлайн-сервисы проверяют взаимность ссылок и корректность кодов языка на конкретном URL.
  • Краулеры (Screaming Frog и аналоги) — выгружают все hreflang по сайту и подсвечивают отсутствие обратных ссылок и self-reference массово.

hreflang — часть технического фундамента сайта наравне с robots.txt, sitemap и каноническими тегами; их логичнее проверять в комплексе (об этом — в материале про техническое SEO). Если языковых версий несколько и вы не уверены, что связи настроены верно, разумнее заказать технический SEO-аудит: он выявит и битые пары hreflang, и конфликты с canonical, и ошибки индексации разом.

Мультиязычность и международное SEO — лишь один слой продвижения; как ссылки и внешняя оптимизация влияют на результат в целом, разобрано в опорном руководстве что такое линкбилдинг.

Итог и следующий шаг

Правильный hreflang — это взаимные ссылки между всеми версиями, корректные коды языка (uk, а не ua), self-reference на каждой странице и отдельные чистые URL под каждый язык. Ошибки здесь не роняют сайт мгновенно, но месяцами «съедают» трафик через каннибализацию и показ не той версии. Если у вас двуязычный или многоязычный сайт и есть сомнения в настройке — закажите технический SEO-аудит, чтобы проверить hreflang, структуру URL и индексацию по всем языкам сразу.

Цены ориентировочные и зависят от ниши, объёма и конкуренции — точную стоимость рассчитаем по вашему проекту.

Рассчитайте, какой прирост трафика нужен для вашего сайта

Страна
Тематика
Количество ссылок
Период
Ожидаемый прирост трафика:
Заполните все поля
Ссылок в месяц:
Общее количество ссылок:
Расчёт носит ориентировочный характер и основан на средних рыночных данных. Результаты могут варьироваться в зависимости от дополнительных факторов.
Начать сегодня
Получите —% трафика уже за месяцев!
Расчёт носит ориентировочный характер и основан на средних рыночных данных. Результаты могут варьироваться в зависимости от дополнительных факторов.

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

1. Обязателен ли hreflang, если у меня только украинская версия?
Нет. hreflang нужен только когда есть две и более языковых или региональных версий. Для одноязычного сайта он не требуется.
2. hreflang или canonical — что использовать для языковых версий?
И то, и другое, но по-разному. У каждой языковой версии canonical указывает на саму себя, а hreflang перечисляет все версии друг друга. canonical на версию другого языка — ошибка, которая ломает hreflang.
3. Какой код указывать для украинского языка — uk или ua?
Для языка — uk (ISO 639-1). Код ua обозначает страну Украину как регион и в hreflang для языка не подходит. Русский язык — ru.
4. Влияет ли hreflang на позиции напрямую?
Напрямую — нет, это не фактор ранжирования. Но он помогает показать пользователю нужную языковую версию, что улучшает поведенческие метрики и косвенно поддерживает результат.
5. Что такое x-default и обязателен ли он?
x-default — страница по умолчанию для пользователей, чей язык не совпал ни с одной версией. Формально не обязателен, но рекомендуется, особенно если есть страница выбора языка или главная версия.