Что такое hreflang и зачем он
hreflang — это атрибут, которым ты говоришь поисковику: «у этой страницы есть версии на других языках или для других регионов, вот они». Дальше робот сам показывает пользователю из Германии немецкую версию, а из России — русскую, вместо того чтобы гадать. Значение — это код языка и, по желанию, региона: ru, en, ru-RU, en-US.
Задача у hreflang одна: развести языковые версии, чтобы они не конкурировали между собой за один запрос и чтобы человек попадал на понятную ему страницу. Разберём, кому он реально нужен (спойлер — не всем), как его прописать тремя способами, соберём теги в генераторе и пройдёмся по ошибкам, на которых спотыкаются даже опытные. Короткое определение — в глоссарии: hreflang простыми словами.
Сразу главное: hreflang — сигнал прежде всего для Google. Яндекс опирается на регион из Вебмастера и доменную зону. Если сайт на одном языке для одной страны, hreflang тебе не нужен — переходи сразу к проверке ниже.
Нужен ли hreflang именно тебе
Половина проблем с hreflang — у тех, кому он вообще не был нужен. Прогони свой случай через дерево, прежде чем что-то прописывать.
Как прописать hreflang
Есть три места, куда можно поставить hreflang. Ставят в одном из них, без дублирования по всем сразу.
1. В <head> страницы. Самый частый способ: теги <link> в шапке каждой страницы. Подходит большинству сайтов.
2. В HTTP-заголовке. Для нестраничных файлов вроде PDF, где нет <head>. Задаётся на сервере.
3. В sitemap.xml. Удобно для больших сайтов: все версии перечислены в карте, страницы не раздуваются. Про саму карту — в гайде по robots.txt и sitemap.xml.
Вот как выглядит связка в <head> для русской и английской версий с международной по умолчанию:
<head> каждой из версий — включая ту, где он прописан.Три железных правила, без которых hreflang не работает:
| Код | Что означает | Когда использовать |
|---|---|---|
ru | Русский язык, любой регион | Основной вариант для одноязычного сайта |
ru-RU | Русский для России | Когда есть отдельная версия под страну |
ru-KZ | Русский для Казахстана | Тот же язык, другие цены и контакты |
en-US / en-GB | Английский для США и Британии | Разные валюты и написание |
kk | Казахский язык | Именно код языка: страна обозначается как KZ |
uk | Украинский язык | Частая путаница: uk — язык, UK — Британия |
x-default | Версия по умолчанию | Куда отправлять всех остальных |
hreflang="RU" вместо hreflang="ru" — в атрибуте на первом месте всегда язык, регион идёт после дефиса и только вместе с ним. Вторая: uk в значении Великобритании. Это код украинского языка, Британия обозначается как en-GB.Генератор тегов hreflang
Впиши свои версии — язык (или язык-РЕГИОН) и адрес — и забери готовый блок. Всё считается прямо в браузере, ничего не отправляется.
<head> каждой версии. Пустые строки не попадают в вывод.Коды языков и регионов: где чаще всего промахиваются
Половина сломанных связок — это неверный код. Google требует язык в формате ISO 639-1 и, если нужен регион, добавляет его в формате ISO 3166-1 Alpha 2. Регион сам по себе не работает: строка вида hreflang="RU" для системы бессмысленна, язык указывать обязательно.
| Что пишут | Что получается | Как правильно |
|---|---|---|
hreflang="ru-RU" на весь сайт | Отсекает русскоязычных из Казахстана и Беларуси: они подпадают под ru-KZ и ru-BY | hreflang="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, английская версия выпадает из индекса, и вся связка теряет смысл.
Запомнить просто: каждая языковая версия канонична сама себе. Canonical схлопывает дубли внутри одного языка, hreflang связывает разные языки между собой. Это две независимые задачи, смешивать их нельзя.
Как убедиться, что связка работает
Прописать теги мало: половина внедрений разваливается тихо, без ошибок и предупреждений. Порядок проверки, который занимает пятнадцать минут.
| Шаг | Что делаете | Что должно получиться |
|---|---|---|
| Исходный код | Открыть страницу и найти в коде все rel="alternate" | Каждая версия перечислена, включая саму страницу |
| Обратные ссылки | Открыть каждую версию из списка и проверить, ссылается ли она назад | Связи взаимны у всех страниц без исключения |
| Коды ответа | Пройти по всем URL из аннотаций | Везде 200, ни редиректов, ни 404, ни noindex |
| HTTP-заголовки | Для PDF и других не-HTML файлов проверить заголовки ответа | Заголовок Link: с теми же аннотациями |
| Валидатор | Прогнать страницу через сторонний тестер тегов | Ошибок нет, x-default на месте |
Заголовки удобно смотреть из терминала одной командой:
Для отладки Google прямо в документации называет сторонние инструменты: генератор тегов Aleyda Solis и тестер тегов от Merkle. Оба разбирают конкретный URL и показывают, какие связи система видит, а какие теряет. Свой генератор для типовых случаев — выше по странице.
Частые ошибки hreflang
hreflang капризен: одна оплошность — и Google молча игнорирует всю связку. Топ ошибок, которые ловлю на аудитах.
Чек-лист hreflang
Перед тем как выкатывать — пройдись по пунктам. Галочки сохраняются в браузере.
язык-РЕГИОН.Частые вопросы
Что такое hreflang?
Когда нужен hreflang, а когда нет?
Как правильно прописать hreflang?
Что такое x-default в hreflang?
Влияет ли hreflang на позиции в поиске?
Google и Яндекс одинаково понимают hreflang?
Главное
hreflang говорит Google, какую языковую или региональную версию страницы показать пользователю. Нужен он только сайтам с несколькими версиями одного контента — для одноязычного сайта под одну страну это лишняя работа и источник ошибок. Если нужен: пропиши в одном месте (head, HTTP-заголовок или sitemap), соблюди три правила — само-ссылка, взаимные ссылки, верные коды — и добавь x-default. Собери теги в генераторе выше и проверь связку краулером перед выкаткой.
Нужен разбор техники сайта, включая hreflang и региональность? Проведу аудит сайта с планом правок по приоритету.