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" — версия по умолчанию, если ни одна другая не подходит
Таблица: частые коды языков и регионов
Формат атрибута: язык или язык-СТРАНА. Вот коды, с которыми чаще всего ошибаются:
Код страны добавляют, только если контент для одного языка отличается в разных регионах.
- Только язык — 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> — единственный вариант, который отрабатывает в обеих системах одинаково.
Типичные ошибки
По данным исследования 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
Hreflang это то же самое, что перевод сайта?
Нет. hreflang не переводит контент и не создаёт языковые версии — он только сообщает поисковику, какие уже существующие страницы являются версиями друг друга. Сначала нужен переведённый контент на отдельных URL, а затем — hreflang, который их связывает.
Нужен ли hreflang, если у сайта только один язык?
Нет, если контент и аудитория полностью совпадают. Он нужен, как только появляется вторая языковая или региональная версия одной и той же страницы.
Влияет ли hreflang на позиции в выдаче напрямую?
Нет, hreflang — не фактор ранжирования сам по себе. Он влияет на то, какая версия страницы показывается конкретному пользователю, и предотвращает потерю видимости из-за дублирования контента между языковыми версиями.
Можно ли использовать hreflang без x-default?
Можно — это необязательный атрибут. Но без него пользователи, чей язык не совпадает ни с одной версией, получат версию по умолчанию, выбранную поисковиком произвольно, а не ту, что вы бы выбрали сами.
Как быстро проверить, что hreflang работает у Яндекса?
Через Яндекс.Вебмастер: раздел индексирования покажет, какие языковые версии страниц проиндексированы. Если hreflang размечен только в sitemap, а не тегами в <head>, Яндекс его не учтёт — проверьте именно исходный код страницы.
