Блог

Что такое hreflang: полное руководство с примерами ошибок

В этой статье: что такое hreflang простыми словами, как его прописать для разных структур URL, таблица кодов языков и регионов, отличия для Google и Яндекса, типичные ошибки, чек-лист и ответы на частые вопросы.
Hreflang — это HTML-атрибут, который сообщает поисковым системам, какие страницы сайта являются переводами друг друга и для какого языка или региона предназначена каждая версия. Проще говоря: это способ сказать Google и Яндексу «вот эта страница — на русском для России, а вот эта — на немецком для Германии, не показывайте их друг вместо друга».
Без hreflang мультиязычный сайт отдаёт выбор версии на откуп поисковой системе. Если страницы на разных языках содержат одинаковую структуру и смысл, поисковик может расценить их как дубли и оставить в выдаче только одну — обычно не ту, что нужна конкретному пользователю. Правильно настроенный hreflang убирает эту неопределённость и разводит версии по языковым и региональным сегментам выдачи.

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

hreflang — это атрибут ссылки rel="alternate", который указывает поисковику, какие URL являются языковыми или региональными вариантами текущей страницы.
Без hreflang поисковая система может:
  • Показывать русскую версию пользователям из Германии
  • Считать переводы дублированным контентом и склеивать их в один документ
  • Не показывать региональные версии в соответствующих локальных выдачах
С hreflang поисковик знает: вот страница на немецком для Германии, вот на французском для Франции, вот английская — для всех остальных. С его помощью можно задать разные версии для одного языка, но разных регионов, а также указать несколько языков для одной страны — например, английский и французский для Канады (en-CA и fr-CA). Это важно для локализации: в Канаде даже на французском языке цены указываются в канадских долларах, а во Франции — в евро.

Как выглядит hreflang

Атрибут добавляется в секцию <head> каждой страницы:
<link rel="alternate" hreflang="ru" href="https://mysite.com/ru/about/" />
<link rel="alternate" hreflang="en" href="https://mysite.com/en/about/" />
<link rel="alternate" hreflang="de" href="https://mysite.com/de/about/" />
<link rel="alternate" hreflang="x-default" href="https://mysite.com/en/about/" />
Ключевые части:
  • rel="alternate" — указывает, что это альтернативная версия страницы
  • hreflang="ru" — код языка по ISO 639-1
  • href — полный абсолютный URL версии (с протоколом и доменом)
  • hreflang="x-default" — версия по умолчанию, если ни одна другая не подходит

Таблица: частые коды языков и регионов

Формат атрибута: язык или язык-СТРАНА. Вот коды, с которыми чаще всего ошибаются:
Код
Значение
ru
русский (любой регион)
ru-RU
русский, Россия
en
английский (любой регион)
en-US
английский, США
en-GB
английский, Великобритания
de
немецкий
fr
французский
fr-CA
французский, Канада
kk
казахский (не kz — это код страны, а не языка)
hy
армянский (не am — тоже код региона)
uz
узбекский
x-default
версия по умолчанию
Код страны добавляют, только если контент для одного языка отличается в разных регионах.
  • Только язык — hreflang="en" — для всех англоязычных пользователей независимо от страны
  • Язык + страна — hreflang="en-US" для США, hreflang="en-GB" для Великобритании — например, цены в долларах против фунтов
  • Если контент одинаковый для всех носителей языка, достаточно кода языка без страны

Взаимность: правило, которое нарушают чаще всего

Каждая страница должна содержать hreflang на все языковые версии, включая саму себя (self-referencing). Это критическое правило: если у вас три языка, каждая версия обязана ссылаться на все три, включая себя. Это создаёт замкнутый набор ссылок, по которому поисковик понимает связь версий между собой.
Правильно: на русской странице есть ссылки на немецкую, английскую и на саму себя. На немецкой — на русскую, английскую и на саму себя. На английской — на русскую, немецкую и на саму себя.
Неправильно: на русской и немецкой есть ссылки на английскую, но на английской нет ответных ссылок. Поисковик считает такую реализацию некорректной и может проигнорировать весь набор.
<!-- Пример правильного набора hreflang -->
<link rel="alternate" hreflang="de" href="https://mysite.com/de/about/" />
<link rel="alternate" hreflang="ru" href="https://mysite.com/ru/about/" />
<link rel="alternate" hreflang="en" href="https://mysite.com/en/about/" />
<link rel="alternate" hreflang="x-default" href="https://mysite.com/en/about/" />

x-default: версия для остальных

hreflang="x-default" — специальное значение для страницы, которая показывается, когда ни одна другая версия не подходит пользователю. Обычно это версия на основном языке сайта (чаще всего русская или английская).
Если у вас русская и казахская версии без английской, x-default можно указать на одну из них — или не использовать вовсе. Это не обязательный атрибут, но рекомендованный Google.

Варианты реализации

Помимо тегов в <head>, hreflang можно указать:
Через HTTP-заголовки. Для PDF и других не-HTML ресурсов — это единственный вариант.
Через карту сайта. Вместо атрибутов на каждой странице — один sitemap, в котором для каждой ссылки перечислены варианты этой же страницы на других языках. Удобно для больших сайтов на стороне Google.
Все варианты равнозначны для Google — выбирайте тот, который проще поддерживать. Кстати, Multify автоматически добавляет нужные метатеги как в HTML-код страниц, так и в карту сайта.

Важное отличие: Google и Яндекс обрабатывают hreflang по-разному

Большинство русскоязычных гайдов по hreflang написаны с оглядкой только на Google — а для сайтов, ориентированных на рунет и СНГ, это половина картины.
  • Google поддерживает все три способа разметки: HTML-теги в <head>, HTTP-заголовки и hreflang в XML Sitemap.
  • Яндекс прекратил поддержку hreflang через XML Sitemap. Единственный надёжный способ указать языковые и региональные версии для Яндекса — HTML-теги <link rel="alternate" hreflang="..."> непосредственно в <head> каждой страницы.
Практический вывод: если у вас есть аудитория в Яндексе (Россия, Казахстан, Беларусь), не полагайтесь на sitemap-реализацию — она будет работать для Google, но не даст эффекта в Яндексе. Тег в <head> — единственный вариант, который отрабатывает в обеих системах одинаково.
Не хотите прописывать hreflang вручную?
Multify генерирует hreflang автоматически для всех страниц при добавлении любого языка — и в HTML, и в карте сайта.
Попробовать бесплатное демо →

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

По данным исследования Ahrefs (374 756 доменов), 67% сайтов, использующих hreflang, имеют хотя бы одну ошибку реализации.

Ошибка 1: Нет взаимных ссылок

Самая частая ошибка. Проверьте: каждая страница каждой версии содержит hreflang на все остальные версии? Если нет — поисковые системы могут некорректно интерпретировать структуру сайта и не учитывать разметку вовсе.

Ошибка 2: Неправильный или относительный URL

hreflang требует абсолютного URL с протоколом: https://mysite.com/en/about/, а не /en/about/. Относительные пути не работают. Также важна согласованность: если canonical URL со слешем в конце (/about/), то и в hreflang должен быть слеш — и наоборот.

Ошибка 3: hreflang указывает на неканонический URL

Если целевая страница сама помечена rel="canonical" на другой URL, поисковик может проигнорировать её как альтернативную версию. hreflang должен указывать строго на канонический адрес каждой версии, а не на дубль или параметризованный URL.

Ошибка 4: Несуществующая версия

В hreflang указана ссылка на страницу, которой нет — например, не все товары переведены, но атрибуты прописаны на все. Поисковик обнаружит 404 и проигнорирует несоответствующий блок. Если у страницы нет перевода — не указывайте hreflang на неё вовсе.

Ошибка 5: Дублирование на одной странице

Два атрибута с одинаковым hreflang на одной странице — например, из-за конфликта плагинов или ручной правки разметки. Google берёт первый, второй игнорирует; итог непредсказуем.

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

hreflang="kk" — правильный код для казахского языка (по списку ISO 639-1). Нельзя использовать kz — это код страны, а не языка. Та же ошибка с армянским: hy — код языка, am — код региона.

Ошибка 7: hreflang на редиректе или заблокированной странице

Если страница с hreflang отдаёт 301-редирект, поисковик следует за ним и теряет атрибут — hreflang должен быть на финальной странице, а не на промежуточной. То же самое с URL, закрытыми в robots.txt, или non-indexable страницами (noindex): hreflang на них не учитывается.

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

Hreflang Testing Tool. Показывает ошибки: неверные атрибуты, отсутствующие обратные ссылки. Минус — страницы нужно загружать вручную.
Screaming Frog или Ahrefs. Сканирование всего сайта. Screaming Frog бесплатно сканирует до 500 URL и показывает все hreflang атрибуты с проверкой взаимности.
Google Search Console в разделе «Международный таргетинг» (для доменов, подтверждённых как Domain property) показывает часть ошибок hreflang, но не заменяет полноценный краулер.

Чек-лист перед публикацией hreflang

  • Каждая версия ссылается сама на себя и на все остальные версии (взаимность)
  • Все URL абсолютные, с протоколом и согласованными слешами
  • hreflang указывает на канонический, индексируемый, отдающий 200 URL
  • Коды языков соответствуют ISO 639-1, коды стран — ISO 3166-1 (не путать kk/kz, hy/am)
  • Есть x-default для пользователей вне заданных языков/регионов
  • Для Яндекса разметка продублирована тегами в <head>, а не только в sitemap

hreflang и Tilda

Tilda не добавляет hreflang самостоятельно. Варианты по факту ограничены:
Вручную через HTML-блок. Добавить теги <link> в блок с кодом. При изменении структуры сайта — обновлять вручную. Не подходит для динамических страниц каталога или блога. Для небольших сайтов — приемлемо.
Через Multify. Прокси генерирует hreflang автоматически для всех страниц всех языковых версий, включая товары и статьи блога. При добавлении языка атрибуты появляются сразу везде, взаимность соблюдается автоматически — и разметка корректно работает как для Google, так и для Яндекса.
При ручной поддержке hreflang на сайте с 50 страницами и 3 языками — это 150 наборов атрибутов. Каждое добавление страницы или языка требует обновления во всех версиях. Автоматизация закрывает это полностью.
Добавим hreflang без ручной работы
Попробуйте Multify с автоматической генерацией hreflang при любых изменениях сайта — с поддержкой и Google, и Яндекса.
Оставить заявку →

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

Hreflang это то же самое, что перевод сайта?

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

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

Нет, если контент и аудитория полностью совпадают. Он нужен, как только появляется вторая языковая или региональная версия одной и той же страницы.

Влияет ли hreflang на позиции в выдаче напрямую?

Нет, hreflang — не фактор ранжирования сам по себе. Он влияет на то, какая версия страницы показывается конкретному пользователю, и предотвращает потерю видимости из-за дублирования контента между языковыми версиями.

Можно ли использовать hreflang без x-default?

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

Как быстро проверить, что hreflang работает у Яндекса?

Через Яндекс.Вебмастер: раздел индексирования покажет, какие языковые версии страниц проиндексированы. Если hreflang размечен только в sitemap, а не тегами в <head>, Яндекс его не учтёт — проверьте именно исходный код страницы.
Готовы настроить hreflang правильно с первого раза?
Multify автоматически расставляет корректный hreflang для всех языковых версий сайта на Tilda — с поддержкой Google и Яндекса, без ручной разметки и риска ошибок из чек-листа выше.
Оставить заявку →
2026-04-14 01:35