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

Дата публикации: 16.05.2026 22:55

Hreflang — атрибут ссылки, который сообщает Google, какая языковая или региональная версия страницы предназначена для конкретной аудитории. Без него мультиязычный сайт получает каннибализацию трафика между версиями и показ неправильных страниц в поиске.


Что такое hreflang и когда он действительно нужен

Атрибут hreflang — HTML-директива для поисковых систем (прежде всего Google и Yandex), которая указывает связь между несколькими версиями одной страницы, отличающимися языком или регионом. Google не «угадывает» правильную версию самостоятельно — без hreflang он выбирает произвольно, и нередко ошибается.

Атрибут введён Google в 2011 году, однако по нашим наблюдениям даже в 2025–2026 годах большинство мультиязычных сайтов содержат критические ошибки в его реализации. Последствия: неправильная версия страницы в SERP, каннибализация между языковыми версиями, падение CTR.

Когда hreflang необходим:

  • Несколько языковых версий сайта — например, украинская, русская и английская на разных URL
  • Один контент, разные регионы — английская для США (en-US) и Великобритании (en-GB) с разными ценами или условиями
  • Субдомены или поддиректории для языковua.site.com против site.com/en/
  • Дубли контента между языками — когда одна версия переведена частично, а остальное совпадает

Когда hreflang НЕ нужен: если сайт монолингвальный и ориентирован на одну страну — hreflang лишь добавит сложности без пользы.

Схема работы hreflang: распределение поискового трафика между языковыми версиями Google читает hreflang site.com/ua/ lang="uk" Ukraine (UA) site.com/ru/ lang="ru" Russia (RU) site.com/en/ lang="en" Global (EN) Пользователь UA Пользователь RU Глобальный юзер
Hreflang направляет каждую аудиторию к правильной языковой версии страницы

Синтаксис: язык vs язык+регион

Значение атрибута hreflang формируется по стандарту ISO 639-1 (язык) и ISO 3166-1 alpha-2 (регион). Понять, когда указывать только язык, а когда — язык с регионом, критически важно для корректной работы атрибута.

Только язык (без региона)

Используйте, если контент одинаков для всех носителей данного языка вне зависимости от страны:

<!-- Одна версия для всех украиноязычных пользователей -->
<link rel="alternate" hreflang="uk" href="https://site.com/ua/">

<!-- Одна версия для всех испаноязычных -->
<link rel="alternate" hreflang="es" href="https://site.com/es/">

Язык + регион (рекомендуется для e-commerce)

Применяйте, когда контент различается в зависимости от страны: цены, валюта, условия доставки, юридический текст:

<!-- Английский для США -->
<link rel="alternate" hreflang="en-US" href="https://site.com/en-us/">

<!-- Английский для Великобритании -->
<link rel="alternate" hreflang="en-GB" href="https://site.com/en-gb/">

<!-- Испанский для Мексики -->
<link rel="alternate" hreflang="es-MX" href="https://site.com/es-mx/">

<!-- Испанский для Испании -->
<link rel="alternate" hreflang="es-ES" href="https://site.com/es-es/">
Практический совет: Для большинства B2B и SaaS сайтов достаточно кода языка без региона (uk, ru, en). Региональное разделение оправдано только тогда, когда контент реально разный для разных стран.
Код Что означает Когда использовать
uk Украинский язык (все регионы) Единственная украиноязычная версия
ru Русский язык (все регионы) Единственная русскоязычная версия
en Английский язык (все регионы) Глобальный английский без регионализации
en-US Английский для США Отдельные цены, условия для US-рынка
en-GB Английский для Великобритании Британская орфография, фунты стерлингов
x-default Версия по умолчанию Для аудиторий без конкретной языковой версии

Три способа внедрения: сравнение

Google поддерживает три метода реализации hreflang. Выбор зависит от типа сайта, CMS и наличия доступа к серверным настройкам. В нашей практике настройки hreflang для мультиязычных сайтов самая распространённая ошибка — это смешивание разных методов на одном сайте, что приводит к конфликтам и игнорированию тегов Googlebot'ом.

Метод Где размещается Преимущества Недостатки Лучше всего для
HTML <head> Тег <head> каждой страницы Просто настроить, поддерживается всеми CMS Увеличивает размер HTML, сложно масштабировать на 10 000+ страниц Сайты до 1 000 страниц, WordPress, OpenCart
HTTP Header Заголовок HTTP-ответа сервера Единственный вариант для PDF и не-HTML файлов Требует доступа к серверным настройкам (Apache/Nginx), сложно дебажить PDF-каталоги, файловые ресурсы
XML Sitemap Файл sitemap.xml Не нагружает HTML, легко масштабировать, удобно для крупных сайтов Требует поддержки со стороны CMS/генератора sitemap, ошибки сложнее отловить Крупные e-commerce, порталы 10 000+ страниц

Метод 1: HTML <head>

Наиболее распространённый метод. Теги добавляются в секцию <head> каждой страницы:

<head>
  <!-- Украинская версия -->
  <link rel="alternate" hreflang="uk" href="https://site.com/ua/page/">
  <!-- Русская версия -->
  <link rel="alternate" hreflang="ru" href="https://site.com/ru/page/">
  <!-- Английская версия -->
  <link rel="alternate" hreflang="en" href="https://site.com/en/page/">
  <!-- Версия по умолчанию -->
  <link rel="alternate" hreflang="x-default" href="https://site.com/page/">
</head>

Метод 2: HTTP Header

Используется для не-HTML ресурсов. Пример конфигурации для Nginx:

location /catalog.pdf {
  add_header Link '<https://site.com/ua/catalog.pdf>; rel="alternate"; hreflang="uk",
                   <https://site.com/en/catalog.pdf>; rel="alternate"; hreflang="en",
                   <https://site.com/catalog.pdf>; rel="alternate"; hreflang="x-default"';
}

Метод 3: XML Sitemap

Оптимальный выбор для крупных сайтов. Структура файла sitemap.xml:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>https://site.com/ua/page/</loc>
    <xhtml:link rel="alternate" hreflang="uk"
                href="https://site.com/ua/page/"/>
    <xhtml:link rel="alternate" hreflang="ru"
                href="https://site.com/ru/page/"/>
    <xhtml:link rel="alternate" hreflang="en"
                href="https://site.com/en/page/"/>
    <xhtml:link rel="alternate" hreflang="x-default"
                href="https://site.com/page/"/>
  </url>
  <url>
    <loc>https://site.com/ru/page/</loc>
    <xhtml:link rel="alternate" hreflang="uk"
                href="https://site.com/ua/page/"/>
    <xhtml:link rel="alternate" hreflang="ru"
                href="https://site.com/ru/page/"/>
    <xhtml:link rel="alternate" hreflang="en"
                href="https://site.com/en/page/"/>
    <xhtml:link rel="alternate" hreflang="x-default"
                href="https://site.com/page/"/>
  </url>
</urlset>
Иерархия выбора метода внедрения hreflang в зависимости от размера сайта Выбор метода hreflang по размеру сайта до 1 000 страниц HTML <head> WordPress, OpenCart Joomla, Drupal Простая настройка через плагин PDF и файлы HTTP Header Apache, Nginx Серверные настройки Нужен доступ к конфигу сервера 10 000+ страниц XML Sitemap Крупный e-commerce Новостные порталы Легко масштабировать без правки HTML
Выбор метода внедрения hreflang зависит от размера сайта и типа ресурсов

Обязательные правила: обратные ссылки и x-default

Два правила, без которых hreflang не работает корректно, независимо от метода внедрения.

Правило 1: обратные (bidirectional) ссылки

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

<!-- Правильно: КАЖДАЯ страница содержит ссылки на ВСЕ версии -->

<!-- На UA-странице (/ua/page/) -->
<link rel="alternate" hreflang="uk" href="https://site.com/ua/page/">  <!-- само-ссылка -->
<link rel="alternate" hreflang="ru" href="https://site.com/ru/page/">
<link rel="alternate" hreflang="en" href="https://site.com/en/page/">
<link rel="alternate" hreflang="x-default" href="https://site.com/page/">

<!-- На EN-странице (/en/page/) - ТОТ ЖЕ набор тегов! -->
<link rel="alternate" hreflang="uk" href="https://site.com/ua/page/">
<link rel="alternate" hreflang="ru" href="https://site.com/ru/page/">
<link rel="alternate" hreflang="en" href="https://site.com/en/page/">  <!-- само-ссылка -->
<link rel="alternate" hreflang="x-default" href="https://site.com/page/">

Правило 2: атрибут x-default

Тег x-default указывает страницу для пользователей, чей браузер/регион не соответствует ни одной из указанных языковых версий. Обычно это главная страница или языковой выбор:

<!-- x-default = страница языкового выбора или главная (EN) -->
<link rel="alternate" hreflang="x-default" href="https://site.com/">
Важно: x-default не обязан совпадать с одной из языковых версий. Это может быть отдельный лендинг с выбором языка — site.com/choose-language/.

Hreflang и canonical: как они взаимодействуют

Canonical и hreflang — два разных сигнала для Google, и они не противоречат друг другу при правильной настройке. Проблема возникает, когда разработчики путают их функции.

Canonical говорит Google: «Эта страница является основной версией, если есть дубликаты». Hreflang говорит: «Эти страницы — переводы одного контента для разных аудиторий».

Ключевое правило: canonical должен указывать на себя (self-referencing), если страница входит в hreflang-группу. То есть каждая языковая версия имеет canonical на саму себя.

<!-- ПРАВИЛЬНО: canonical указывает на текущую (свою) страницу -->
<!-- На UA-странице (site.com/ua/page/) -->
<link rel="canonical" href="https://site.com/ua/page/">
<link rel="alternate" hreflang="uk" href="https://site.com/ua/page/">
<link rel="alternate" hreflang="en" href="https://site.com/en/page/">

<!-- НЕПРАВИЛЬНО: canonical с одной языковой версии указывает на другую -->
<!-- На UA-странице (site.com/ua/page/) -->
<link rel="canonical" href="https://site.com/en/page/">  <!-- ОШИБКА! -->
<link rel="alternate" hreflang="uk" href="https://site.com/ua/page/">
<link rel="alternate" hreflang="en" href="https://site.com/en/page/">
Если canonical на UA-странице указывает на EN-версию, Google воспринимает UA-версию как дубликат и исключает её из индекса — hreflang перестаёт работать для этой пары.

Топ-7 ошибок с примерами кода

По нашему опыту аудитов мультиязычных сайтов — 9 из 10 проектов имеют хотя бы одну из этих ошибок. Некоторые — сразу несколько:

Ошибка 1: Отсутствие обратных ссылок

<!-- ОШИБКА: Только UA-страница ссылается на EN, но EN не ссылается на UA -->
<!-- UA-страница: -->
<link rel="alternate" hreflang="uk" href="https://site.com/ua/">
<link rel="alternate" hreflang="en" href="https://site.com/en/">

<!-- EN-страница: -->
<link rel="alternate" hreflang="en" href="https://site.com/en/">
<!-- Нет тега hreflang="uk" -- Google ИГНОРИРУЕТ весь набор! -->

Ошибка 2: Неправильный код языка

<!-- ОШИБКА: Несуществующие или некорректные коды -->
<link rel="alternate" hreflang="ua" href="...">   <!-- Правильно: "uk" -->
<link rel="alternate" hreflang="rus" href="...">  <!-- Правильно: "ru" -->
<link rel="alternate" hreflang="eng" href="...">  <!-- Правильно: "en" -->

<!-- ПРАВИЛЬНО: -->
<link rel="alternate" hreflang="uk" href="...">
<link rel="alternate" hreflang="ru" href="...">
<link rel="alternate" hreflang="en" href="...">

Ошибка 3: Ссылки на редиректы или недоступные URL

<!-- ОШИБКА: hreflang указывает на URL с редиректом 301 -->
<link rel="alternate" hreflang="uk" href="https://site.com/ua/page">
<!-- Если этот URL редиректит на site.com/ua/page/ (со слешем) -- Google игнорирует тег -->

<!-- ПРАВИЛЬНО: финальный URL без редиректов -->
<link rel="alternate" hreflang="uk" href="https://site.com/ua/page/">

Ошибка 4: Неполный набор версий

<!-- ОШИБКА: Есть 3 языковые версии, но hreflang указан только для 2 -->
<link rel="alternate" hreflang="uk" href="https://site.com/ua/page/">
<link rel="alternate" hreflang="en" href="https://site.com/en/page/">
<!-- Пропущен hreflang="ru" -- RU-версия не получит правильного распределения трафика -->

Ошибка 5: Отсутствие x-default

<!-- ОШИБКА: Нет тега x-default -->
<link rel="alternate" hreflang="uk" href="https://site.com/ua/">
<link rel="alternate" hreflang="ru" href="https://site.com/ru/">
<link rel="alternate" hreflang="en" href="https://site.com/en/">
<!-- Что покажет Google японцу? Результат непредсказуем -->

<!-- ПРАВИЛЬНО: -->
<link rel="alternate" hreflang="x-default" href="https://site.com/en/">

Ошибка 6: Смешивание методов внедрения

<!-- ОШИБКА: hreflang в HTML head + тот же hreflang в Sitemap одновременно -->
<!-- Это не запрещено, но приводит к конфликтам, если значения различаются -->
<!-- Всегда используйте ОДИН метод для всего сайта -->

Ошибка 7: Canonical на иноязычную версию

<!-- ОШИБКА: UA-страница с canonical на EN-версию -->
<link rel="canonical" href="https://site.com/en/page/">  <!-- UA-страница -->
<link rel="alternate" hreflang="uk" href="https://site.com/ua/page/">
<!-- Google исключит UA из индекса, hreflang будет проигнорирован -->

<!-- ПРАВИЛЬНО: self-referencing canonical -->
<link rel="canonical" href="https://site.com/ua/page/">  <!-- Указывает на себя! -->
Схема правильной связки canonical и hreflang на примере трёх языков Правильная связка canonical + hreflang UA-страница canonical: /ua/page/ hreflang uk: /ua/page/ hreflang ru: /ru/page/ hreflang en: /en/page/ self-referencing canonical RU-страница canonical: /ru/page/ hreflang uk: /ua/page/ hreflang ru: /ru/page/ hreflang en: /en/page/ self-referencing canonical EN-страница canonical: /en/page/ hreflang uk: /ua/page/ hreflang ru: /ru/page/ hreflang en: /en/page/ self-referencing canonical
Каждая страница имеет self-referencing canonical и полный набор hreflang-ссылок на все версии

Диагностика: Screaming Frog, GSC, hreflang Testing Tool

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

Google Search Console (GSC)

  1. Зайдите в GSC → ИндексированиеСтраницы
  2. Фильтруйте по статусу "Исключено" → ищите причину "Альтернативная страница с правильно указанным тегом hreflang"
  3. Перейдите в НастройкиSitemap → проверьте, не возвращает ли GSC ошибок при обработке sitemap с hreflang
  4. В разделе Улучшения проверяйте сигналы о конфликтах языковых версий

Screaming Frog SEO Spider

  1. Запустите краулинг сайта в режиме Spider
  2. Перейдите в Hreflang → вкладка All — увидите все найденные теги
  3. Вкладка Errors покажет: отсутствующие обратные ссылки, мёртвые URL, неправильные коды языков
  4. Вкладка Unconfirmed — теги, для которых Screaming Frog не смог подтвердить обратную ссылку
  5. Сохраните отчёт Reports → Hreflang для фиксации состояния
Лайфхак: В Screaming Frog включите режим Store HTML — инструмент сохраняет HTML каждой страницы и может проверять hreflang даже на страницах с JavaScript-рендерингом.

Google Hreflang Tags Testing Tool (Merkle)

Бесплатный онлайн-инструмент от Merkle (hreflang.org) позволяет проверить отдельные URL или загрузить список. Инструмент показывает:

  • Missing return links — отсутствие обратных ссылок
  • Invalid language/region codes — невалидные коды
  • Non-200 URLs — недоступные страницы в наборе
  • No x-default — отсутствие дефолтной версии

Проверка через curl (для метода HTTP Header)

# Проверить hreflang в HTTP-заголовках:
curl -I https://site.com/en/page/

# Ожидаемый вывод в заголовке Link:
# Link: <https://site.com/ua/page/>; rel="alternate"; hreflang="uk",
#        <https://site.com/en/page/>; rel="alternate"; hreflang="en",
#        <https://site.com/>; rel="alternate"; hreflang="x-default"

Кейс: мультиязычный сайт после исправления hreflang

Наш клиент — производитель промышленного оборудования с сайтом на 3 языка (UA/RU/EN). До обращения в SEO-Factory сайт имел более 2 300 страниц с hreflang-тегами, но из-за ошибки в шаблоне CMS обратные ссылки отсутствовали в 67% случаев. Дополнительно: canonical на UA-версиях указывал на EN-версии (ошибка при миграции с предыдущего сайта).

Выявленные проблемы (Screaming Frog + GSC):

  • 1 541 страница с отсутствующими обратными hreflang-ссылками
  • 312 страниц с canonical-конфликтом (UA → EN)
  • Код языка ua вместо правильного uk на всех страницах
  • Отсутствующий x-default на всех URL

Ход исправления (6 недель):

  1. Неделя 1–2: Исправление шаблона CMS — автоматическая генерация полного набора hreflang для всех страниц, смена кода uauk
  2. Неделя 3: Исправление canonical на всех UA-страницах (self-referencing), добавление x-default
  3. Неделя 4: Обновление XML Sitemap, повторная подача в GSC
  4. Недели 5–6: Мониторинг индексации в GSC, дообработка оставшихся ошибок

Результаты через 3 месяца после исправления:

Метрика До исправления После исправления Изменение
Органический трафик (UA-версия) 2 140 сес./мес. 3 890 сес./мес. +82%
Органический трафик (EN-версия) 890 сес./мес. 1 650 сес./мес. +85%
Проиндексировано UA-страниц 68% 96% +28 п.п.
Средний CTR в поиске (UA) 3.2% 5.7% +2.5 п.п.
Ошибки hreflang в GSC 1 853 14 -99%

Главный вывод из этого проекта: ошибки hreflang напрямую влияют на индексацию, а не только на распределение трафика. Когда Google не понимает языковую структуру сайта — он частично исключает страницы из индекса. Если ваш сайт не получает ожидаемого трафика из международного поиска, закажите технический SEO-аудит — мы проверим hreflang в первую очередь.

Часто задаваемые вопросы

Нужен ли hreflang, если сайт на одном языке, но с разными регионами?

Да, необходим. Например, если у вас есть английская версия для США и Великобритании, добавьте hreflang en-US и en-GB с разными URL. Без этого Google может показывать британцам американскую версию с другими ценами или условиями.

Обязателен ли атрибут x-default?

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

Сколько времени занимает индексация hreflang-тегов после исправления ошибок?

Google переиндексирует hreflang-теги в течение 2–6 недель после внесения изменений. На крупных сайтах (10 000+ страниц) этот процесс может занять до 2 месяцев. Ускорить можно повторной подачей Sitemap в Google Search Console.

Может ли hreflang конфликтовать с canonical-тегом?

Да, конфликт возникает, когда canonical указывает на страницу другого языка. Правило простое: canonical всегда должен указывать на себя (self-referencing), а hreflang — на все языковые версии. Если canonical ведёт на иноязычную страницу, Google проигнорирует hreflang.

Есть мультиязычный сайт? Проверим hreflang бесплатно

На большинстве мультиязычных сайтов есть критические ошибки hreflang, которые блокируют рост международного трафика. Команда SEO-Factory проведёт технический аудит и выявит все проблемы с языковыми тегами, canonical и структурой URL.

Заказать продвижение мультиязычного сайта или связаться для бесплатной консультации по hreflang-ошибкам.

Seo Factory
Материалы на сайте SEO-FACTORY подготавливаются командой специалистов в области SEO-продвижения, интернет-маркетинга, контекстной рекламы и аналитики. Основная цель проекта — публиковать практические и понятные материалы, которые помогают бизнесу, блогерам и владельцам сайтов лучше понимать современные алгоритмы Google, принципы продвижения и инструменты digital-маркетинга. Авторы статей регулярно работают с коммерческими проектами в Украине и на зарубежных рынках, тестируют SEO-стратегии, анализируют изменения поисковых алгоритмов, изучают поведенческие факторы, линкбилдинг, AI-поиск, контент-маркетинг и рекламные инструменты Google Ads. Благодаря этому материалы основаны не только на теории, но и на реальной практике. В публикациях SEO-FACTORY используются: актуальные данные и исследования рынка; собственные наблюдения и практический опыт; анализ обновлений Google и SEO-трендов; реальные кейсы продвижения сайтов; рекомендации по технической оптимизации и росту трафика. Проект ориентирован на создание качественного экспертного контента без «воды» и шаблонных советов. Главный акцент делается на понятной подаче, практической пользе и современных подходах к SEO и digital-маркетингу