hreflang — это атрибут, который сообщает Google, на каком языке и для какого региона написана конкретная страница, чтобы поисковик показывал пользователю правильную языковую версию. Если у сайта несколько версий (например, украинская и русская), без hreflang Google может путать их между собой, склеивать или выдавать не ту версию в результатах. Настраивается тремя способами: тегом в разделе head, HTTP-заголовком или через файл sitemap.
Коротко
- hreflang указывает Google язык и регион страницы. Это подсказка (hint), а не жёсткая команда — поисковик учитывает её вместе с другими сигналами.
- Атрибут должен быть взаимным: если страница А ссылается на Б, то Б обязана ссылаться на А. Односторонние связи игнорируются.
- Три способа внедрения: HTML-тег в head, HTTP-заголовок (для PDF и других не-HTML файлов), sitemap (удобно при большом числе URL).
- Каждая страница должна ссылаться и сама на себя — это обязательный self-reference.
- Для украинских сайтов с версиями RU и UA hreflang снимает риск каннибализации языков в выдаче.
Что такое hreflang и зачем он нужен
Атрибут rel=»alternate» hreflang=»x» появился, чтобы решить задачу: у страницы есть несколько языковых или региональных версий, и поисковик должен показать каждому пользователю подходящую. Житель Львова, ищущий на украинском, должен попадать на UA-страницу; пользователь, ищущий на русском, — на RU-версию того же материала.
Важно понимать: hreflang не поднимает позиции сам по себе. Он не про ранжирование, а про то, какую из уже ранжирующихся версий Google покажет конкретному пользователю. Косвенно это улучшает поведенческие метрики — человек сразу видит страницу на своём языке, реже возвращается в выдачу, — и это уже влияет на общий результат.
Частый вопрос — чем hreflang отличается от canonical. Canonical говорит «это одна и та же страница, индексируй вот эту». hreflang говорит «это разные, но эквивалентные версии для разных языков — индексируй все, но показывай нужную». Смешивать их нельзя: canonical языковой версии должен указывать на саму себя, а не на версию другого языка.


Синтаксис hreflang: примеры кода
Способ 1. Теги в разделе head
Самый распространённый вариант. В head каждой страницы перечисляются все её языковые версии, включая саму себя:
<link rel=»alternate» hreflang=»uk» href=»https://example.com/ua/hreflang» />
<link rel=»alternate» hreflang=»ru» href=»https://example.com/hreflang» />
<link rel=»alternate» hreflang=»en» href=»https://example.com/en/hreflang» />
<link rel=»alternate» hreflang=»x-default» href=»https://example.com/hreflang» />
Код языка — по стандарту ISO 639-1, при необходимости через дефис добавляется регион по ISO 3166-1 Alpha-2, например en-US или en-GB. Ключевая ловушка: украинский язык — это uk, а не ua. Код «ua» относится к стране Украина как региону, но не к языку. Русский — ru.
Значение x-default указывает страницу «по умолчанию» — её увидят пользователи, чей язык не совпал ни с одной из версий. Обычно это главная языковая версия или страница выбора языка.
Способ 2. HTTP-заголовок
Для файлов без раздела head (PDF, документы) hreflang передаётся в HTTP-ответе сервера:
Link: <https://example.com/ua/file.pdf>; rel=»alternate»; hreflang=»uk»,
<https://example.com/file.pdf>; rel=»alternate»; hreflang=»ru»
Способ 3. Через sitemap
При большом числе страниц удобнее описать связи в XML-карте сайта — тогда не нужно править head каждой страницы. Для одного URL перечисляются все его версии через элементы xhtml:link:
<url>
<loc>https://example.com/hreflang</loc>
<xhtml:link rel=»alternate» hreflang=»ru» href=»https://example.com/hreflang»/>
<xhtml:link rel=»alternate» hreflang=»uk» href=»https://example.com/ua/hreflang»/>
<xhtml:link rel=»alternate» hreflang=»en» href=»https://example.com/en/hreflang»/>
</url>
Выбирайте один способ и придерживайтесь его на всём сайте — дублировать hreflang в head и в sitemap одновременно не нужно.
Структура URL мультиязычного сайта: домены, папки, поддомены
До настройки hreflang нужно решить, как вообще разделять языки на уровне адресов. Есть четыре подхода — у каждого свой баланс между SEO-весом, стоимостью и удобством.
| Подход | Пример | Плюсы | Минусы |
| Отдельные домены (ccTLD) | site.ua / site.pl | Максимальный геосигнал; чёткое разделение | Дорого; вес доменов наращивается отдельно |
| Поддомены | uk.site.com | Гибкость; отдельная настройка | Вес передаётся хуже, чем внутри домена |
| Подпапки | site.com/ua/ | Весь ссылочный вес в одном домене; дёшево | Один сервер/гео по умолчанию |
| Параметры URL | site.com/?lang=uk | Технически просто | Google не рекомендует; хуже индексируется |
Для большинства проектов, в том числе украинских, оптимальны подпапки: весь ссылочный вес накапливается на одном домене, а языки разделены прозрачно и дёшево. Отдельные домены оправданы, когда нужен сильный геотаргетинг под разные страны и есть бюджет вести несколько сайтов. Параметров URL для языков лучше избегать.
Особый случай Украины: RU и UA на одном сайте
Украинский рынок почти всегда двуязычный: одну и ту же услугу ищут и на украинском, и на русском. Логично держать обе версии — но именно здесь возникает каннибализация языков. Если RU- и UA-версии живут по одному URL (или Google не понимает, что это языковые пары), они начинают конкурировать друг с другом за одни запросы: поисковик не знает, какую показывать, и просаживает обе.
Правильная связка для двуязычного сайта: (1) у каждой версии — свой отдельный URL (например, RU в корне, UA в папке /ua/); (2) взаимный hreflang между парой uk ↔ ru; (3) self-canonical у каждой версии; (4) переведён весь контент, а не только меню. Тогда Google видит две эквивалентные страницы под разные языки и перестаёт их путать. Подробнее о самой проблеме конкуренции страниц — в материале про дубли и каннибализацию.
Типичные ошибки hreflang
- Код «ua» вместо «uk». Самая частая ошибка на украинских сайтах: для украинского языка нужен uk.
- Нет обратной ссылки. Страница А указывает на Б, а Б на А — нет. Google игнорирует такую одностороннюю связь целиком.
- Нет self-reference. Страница не перечисляет саму себя среди версий — набор hreflang считается неполным.
- hreflang на неканонические URL. Ссылки ведут на редиректы, страницы с параметрами или noindex вместо чистых канонических адресов.
- Конфликт с canonical. canonical языковой версии указывает на версию другого языка — тогда hreflang «ломается».
- Относительные URL. В href нужны абсолютные адреса с протоколом https, а не /page.
- Несогласованные пары. На разных страницах кластера перечислены разные наборы версий — связи рвутся.
Как проверить hreflang
После внедрения обязательно проверьте разметку — ошибки в hreflang почти всегда «тихие» и не видны глазом. Что использовать:
- Google Search Console — отслеживает ошибки индексации и покрытия языковых версий; сюда же приходят предупреждения о проблемах разметки. Как её подключить и читать отчёты — в отдельной инструкции по Search Console.
- Валидаторы hreflang — онлайн-сервисы проверяют взаимность ссылок и корректность кодов языка на конкретном URL.
- Краулеры (Screaming Frog и аналоги) — выгружают все hreflang по сайту и подсвечивают отсутствие обратных ссылок и self-reference массово.
hreflang — часть технического фундамента сайта наравне с robots.txt, sitemap и каноническими тегами; их логичнее проверять в комплексе (об этом — в материале про техническое SEO). Если языковых версий несколько и вы не уверены, что связи настроены верно, разумнее заказать технический SEO-аудит: он выявит и битые пары hreflang, и конфликты с canonical, и ошибки индексации разом.
Мультиязычность и международное SEO — лишь один слой продвижения; как ссылки и внешняя оптимизация влияют на результат в целом, разобрано в опорном руководстве что такое линкбилдинг.
Итог и следующий шаг
Правильный hreflang — это взаимные ссылки между всеми версиями, корректные коды языка (uk, а не ua), self-reference на каждой странице и отдельные чистые URL под каждый язык. Ошибки здесь не роняют сайт мгновенно, но месяцами «съедают» трафик через каннибализацию и показ не той версии. Если у вас двуязычный или многоязычный сайт и есть сомнения в настройке — закажите технический SEO-аудит, чтобы проверить hreflang, структуру URL и индексацию по всем языкам сразу.
Цены ориентировочные и зависят от ниши, объёма и конкуренции — точную стоимость рассчитаем по вашему проекту.