Атрибут hreflang: зачем нужен и как правильно настроить

12 июля 2026обновлено 5 августа 202610 мингайд

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

hreflang — это атрибут, которым ты говоришь поисковику: «у этой страницы есть версии на других языках или для других регионов, вот они». Дальше робот сам показывает пользователю из Германии немецкую версию, а из России — русскую, вместо того чтобы гадать. Значение — это код языка и, по желанию, региона: ru, en, ru-RU, en-US.

Задача у hreflang одна: развести языковые версии, чтобы они не конкурировали между собой за один запрос и чтобы человек попадал на понятную ему страницу. Разберём, кому он реально нужен (спойлер — не всем), как его прописать тремя способами, соберём теги в генераторе и пройдёмся по ошибкам, на которых спотыкаются даже опытные. Короткое определение — в глоссарии: hreflang простыми словами.

Сразу главное: hreflang — сигнал прежде всего для Google. Яндекс опирается на регион из Вебмастера и доменную зону. Если сайт на одном языке для одной страны, hreflang тебе не нужен — переходи сразу к проверке ниже.

Нужен ли hreflang именно тебе

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

Нужен ли тебе hreflang?

Как прописать hreflang

Есть три места, куда можно поставить hreflang. Ставят в одном из них, без дублирования по всем сразу.

1. В <head> страницы. Самый частый способ: теги <link> в шапке каждой страницы. Подходит большинству сайтов.

2. В HTTP-заголовке. Для нестраничных файлов вроде PDF, где нет <head>. Задаётся на сервере.

3. В sitemap.xml. Удобно для больших сайтов: все версии перечислены в карте, страницы не раздуваются. Про саму карту — в гайде по robots.txt и sitemap.xml.

Вот как выглядит связка в <head> для русской и английской версий с международной по умолчанию:

<link rel="alternate" hreflang="ru" href="https://site.ru/"> <link rel="alternate" hreflang="en" href="https://site.com/en/"> <link rel="alternate" hreflang="x-default" href="https://site.com/">
Этот блок ставится в <head> каждой из версий — включая ту, где он прописан.

Три железных правила, без которых hreflang не работает:

1. Само-ссылка
Каждая страница перечисляет все версии, включая саму себя. Русская ссылается и на русскую тоже.
2. Обратные ссылки
Связь взаимна: если A указывает на B, то B обязан указывать на A. Иначе Google игнорирует связку.
3. Верные коды
Язык по ISO 639-1 (ru, en), регион по ISO 3166-1 (RU, US). Формат язык-РЕГИОН.
Схема взаимных ссылок hreflang между тремя языковыми версиями сайта
Набор ссылок одинаков на всех версиях, и каждая ссылается сама на себя. Односторонняя связь игнорируется целиком.
Коды языка и региона: что писать в атрибуте
Язык пишется строчными, регион прописными: формат ru-RU. Один только регион без языка недопустим
КодЧто означаетКогда использовать
ruРусский язык, любой регионОсновной вариант для одноязычного сайта
ru-RUРусский для РоссииКогда есть отдельная версия под страну
ru-KZРусский для КазахстанаТот же язык, другие цены и контакты
en-US / en-GBАнглийский для США и БританииРазные валюты и написание
kkКазахский языкИменно код языка: страна обозначается как KZ
ukУкраинский языкЧастая путаница: uk — язык, UK — Британия
x-defaultВерсия по умолчаниюКуда отправлять всех остальных
Две ошибки, которые встречаются чаще прочих. Первая: hreflang="RU" вместо hreflang="ru" — в атрибуте на первом месте всегда язык, регион идёт после дефиса и только вместе с ним. Вторая: uk в значении Великобритании. Это код украинского языка, Британия обозначается как en-GB.

Генератор тегов hreflang

Впиши свои версии — язык (или язык-РЕГИОН) и адрес — и забери готовый блок. Всё считается прямо в браузере, ничего не отправляется.

hreflangURL версии
теги для <head>

          
Готовый блок ставь в <head> каждой версии. Пустые строки не попадают в вывод.

Коды языков и регионов: где чаще всего промахиваются

Половина сломанных связок — это неверный код. Google требует язык в формате ISO 639-1 и, если нужен регион, добавляет его в формате ISO 3166-1 Alpha 2. Регион сам по себе не работает: строка вида hreflang="RU" для системы бессмысленна, язык указывать обязательно.

Что пишутЧто получаетсяКак правильно
hreflang="ru-RU" на весь сайтОтсекает русскоязычных из Казахстана и Беларуси: они подпадают под ru-KZ и ru-BYhreflang="ru", когда контент один для всех русскоязычных
hreflang="uk" для Великобританииuk — код украинского языка. Британцы получат украинскую версиюhreflang="en-GB"
hreflang="UK"UK не входит в ISO 3166-1 Alpha 2, Google такой код игнорируетhreflang="en-GB"
hreflang="EU", hreflang="UN"Коды зарезервированы под другое, часть аннотации отбрасываетсяПеречислить страны по отдельности
hreflang="en-UK"Язык верный, регион несуществующий — связка не читаетсяhreflang="en-GB"
hreflang="kz"Казахский язык кодируется как kk, KZ — это странаhreflang="kk" или hreflang="kk-KZ"
Правило, которое экономит время. Регион добавляйте тогда, когда версии реально различаются: цены в другой валюте, свой ассортимент, другие условия доставки. Если текст один и тот же для всех русскоязычных, хватит ru. Иначе вы сами дробите аудиторию на группы, под которые потом придётся заводить отдельные страницы.

hreflang и canonical: пара, которая ссорится

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

<!-- страница https://site.com/en/ --> <!-- так ломается: canonical уводит на другой язык --> <link rel="canonical" href="https://site.com/" /> <link rel="alternate" hreflang="en" href="https://site.com/en/" /> <!-- так работает: canonical на себя --> <link rel="canonical" href="https://site.com/en/" /> <link rel="alternate" hreflang="ru" href="https://site.com/" /> <link rel="alternate" hreflang="en" href="https://site.com/en/" /> <link rel="alternate" hreflang="x-default" href="https://site.com/" />

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

Как убедиться, что связка работает

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

ШагЧто делаетеЧто должно получиться
Исходный кодОткрыть страницу и найти в коде все rel="alternate"Каждая версия перечислена, включая саму страницу
Обратные ссылкиОткрыть каждую версию из списка и проверить, ссылается ли она назадСвязи взаимны у всех страниц без исключения
Коды ответаПройти по всем URL из аннотацийВезде 200, ни редиректов, ни 404, ни noindex
HTTP-заголовкиДля PDF и других не-HTML файлов проверить заголовки ответаЗаголовок Link: с теми же аннотациями
ВалидаторПрогнать страницу через сторонний тестер теговОшибок нет, x-default на месте

Заголовки удобно смотреть из терминала одной командой:

curl -sI https://site.com/docs/guide.pdf | grep -i "^link:"
Чего ждать по срокам. Аннотации срабатывают не сразу: поиску нужно переобойти все версии, и связка учитывается лишь после того, как обойдены обе стороны. На небольшом сайте это дни, на крупном — недели. Не переделывайте разметку через три дня после внедрения, решив, что она не работает.

Для отладки Google прямо в документации называет сторонние инструменты: генератор тегов Aleyda Solis и тестер тегов от Merkle. Оба разбирают конкретный URL и показывают, какие связи система видит, а какие теряет. Свой генератор для типовых случаев — выше по странице.

Частые ошибки hreflang

hreflang капризен: одна оплошность — и Google молча игнорирует всю связку. Топ ошибок, которые ловлю на аудитах.

✗ Так ломается
Нет само-ссылки на текущую версию
Ссылки не взаимны (A→B, но B→A нет)
Код региона как язык: hreflang="RU"
Ссылки на страницы с noindex или редиректом
Абсолютные URL перепутаны с относительными
✓ Так работает
Каждая версия ссылается на все, включая себя
Связи взаимны у всех страниц
Формат язык-РЕГИОН: ru-RU, en-US
Ссылки ведут на живые страницы с кодом 200
Везде полные абсолютные URL
Проверить связку по сайту удобно краулером — как это делает Screaming Frog, разбирал в отдельном гайде, а общую техничку — в техническом аудите.

Чек-лист hreflang

Перед тем как выкатывать — пройдись по пунктам. Галочки сохраняются в браузере.

hreflang мне действительно нужен. У сайта несколько языковых или региональных версий одного контента — случай именно для hreflang.
Каждая версия ссылается на все, включая себя. Само-ссылка стоит на всех страницах связки.
Ссылки взаимны. Если A указывает на B, то B указывает на A — по всем парам.
Коды языка и региона верные. Язык по ISO 639-1, регион по ISO 3166-1, формат язык-РЕГИОН.
Есть x-default. Указана страница по умолчанию для остальных языков и регионов.
URL абсолютные и живые. Полные адреса, все отдают код 200, без редиректов и noindex.
Способ один. hreflang прописан в одном месте — в head, в HTTP-заголовке или в sitemap, без дублирования по всем трём.
Все семь пунктов закрыты — hreflang настроен корректно, Google покажет нужную версию.
Чек-лист настройки hreflang. Прогресс сохраняется в браузере.

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

Что такое hreflang?
Это атрибут, который говорит поисковику, на каком языке и для какого региона сделана страница, чтобы он показывал пользователю нужную языковую версию. Прописывается в теге head, в HTTP-заголовке или в sitemap как link rel=alternate hreflang с кодом языка и региона.
Когда нужен hreflang, а когда нет?
hreflang нужен, если у сайта есть несколько языковых или региональных версий одного и того же контента: например, русская и английская страницы или версии для России и Казахстана. Если сайт на одном языке и для одной страны, hreflang не нужен — лишние теги только добавят ошибок и работы.
Как правильно прописать hreflang?
Соблюдай три правила: каждая страница ссылается на все языковые версии, включая саму себя; ссылки взаимны — если страница A указывает на B, то B указывает на A; коды языка и региона по стандартам (ru, en, ru-RU, en-US). Дополнительно добавь версию x-default для пользователей, чей язык не совпал ни с одной из версий.
Что такое x-default в hreflang?
Значение hreflang x-default указывает страницу по умолчанию для пользователей, чей язык или регион не совпал ни с одной из перечисленных версий. Обычно это международная или англоязычная версия сайта либо страница выбора языка. Указывать x-default необязательно, но желательно.
Влияет ли hreflang на позиции в поиске?
Напрямую hreflang позиции не поднимает — это техническая подсказка о языке и регионе, без прямого влияния на ранжирование. Но он убирает конкуренцию между своими же языковыми версиями за один запрос и показывает пользователю правильную страницу, что улучшает поведенческие факторы и снижает возвраты в поиск.
Google и Яндекс одинаково понимают hreflang?
hreflang — сигнал в первую очередь для Google. Яндекс учитывает его слабее и опирается на региональность через настройки в Вебмастере и через доменную зону. Поэтому для сайта на одном языке в рунете hreflang чаще всего не нужен, и региональность настраивается через Яндекс Вебмастер.
Дублированный контент: как найти и убрать
как не спутать языковые версии с дублями

Главное

Если коротко

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

Нужен разбор техники сайта, включая hreflang и региональность? Проведу аудит сайта с планом правок по приоритету.

Больше разборов и инструментов в Telegram — «Digital-трафик»

Читать дальше

Все статьи
Скопировано