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> — единственный вариант, который отрабатывает в обеих системах одинаково.