Hreflang: полное руководство по международному SEO
Как спланировать языковые и региональные версии, внедрить взаимные hreflang-аннотации и проверить, что каждый URL отдаётся нужной аудитории.
Hreflang — это HTML-атрибут, который сообщает поисковикам, для какого языка и региона предназначена каждая версия страницы. Google использует эти данные, чтобы показывать пользователю версию контента, подходящую его языку и местоположению.
Без hreflang Google пытается угадать нужную версию сам — и часто ошибается: русскоязычный пользователь получает английскую страницу, а немец видит французскую. Это снижает CTR, повышает показатель отказов и стоит конверсий.
Что такое hreflang
Атрибут hreflang появился в 2011 году: Google ввёл его, чтобы решить проблему дублирования контента на международных сайтах. Если страница /about существует как /en/about, /de/about и /fr/about, Google не должен считать их дублями — каждая обслуживает свою аудиторию.
Год появления
Google ввёл hreflang для мультиязычных сайтов
Коды регионов
Кодов ISO 3166-1 alpha-2, которые поддерживает Google
Взаимность
Все версии страницы должны ссылаться друг на друга
Влияние на скорость
Корректно внедрённый hreflang не замедляет сайт
Hreflang поддерживают только Google и Яндекс. Bing опирается на мета-тег Content-Language и HTTP-заголовки, а структуру URL и геотаргетинг настраивает через инструменты для вебмастеров. Если ваша аудитория включает русскоязычных пользователей, hreflang всё равно нужен для корректной работы Яндекса.
Когда нужен hreflang
Не каждому мультиязычному сайту нужен hreflang. Важно понимать, когда атрибут действительно решает задачу.
| Ситуация | Нужен hreflang | Комментарий |
|---|---|---|
| Один язык, разные страны (en-US, en-GB) | Да | Разный контент: цены, написание, акции |
| Разные языки (en, de, fr) | Да | Основной сценарий использования hreflang |
| Один язык, один регион | Нет | Не нужно дублировать ссылки на себя |
| Контент одинаковый во всех языковых версиях | Нет | Используйте canonical |
| Частичный перевод (70%+ контента) | Да | Даже неполные переводы нуждаются в разметке |
| Машинный перевод без редактуры | Нет | Google может счесть это спамом |
/en-us/ и /en-gb/ без различий), лучше использовать canonical, а не hreflang.Синтаксис и форматы
Hreflang использует коды двух стандартов: ISO 639-1 для языка и ISO 3166-1 alpha-2 для региона. Формат: language или language-REGION.
<!-- Language only -->
<link rel="alternate" hreflang="ru" href="https://example.com/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/" />
<!-- Language + region -->
<link rel="alternate" hreflang="en-US" href="https://example.com/en-us/" />
<link rel="alternate" hreflang="en-GB" href="https://example.com/en-gb/" />
<link rel="alternate" hreflang="fr-FR" href="https://example.com/fr/" />
<link rel="alternate" hreflang="fr-CA" href="https://example.com/fr-ca/" />
<!-- x-default: page for users without a matching locale -->
<link rel="alternate" hreflang="x-default" href="https://example.com/" />Регион в hreflang всегда пишется заглавными буквами (en-GB, fr-CA), язык — строчными (en, fr). Многие реализации используют строчные везде. Google понимает оба варианта, но следовать каноническому формату — хорошая практика.
| Код | Значение |
|---|---|
| ru | Русский (любой регион) |
| en | Английский (любой регион) |
| en-US | Английский для США |
| en-GB | Английский для Великобритании |
| de-AT | Немецкий для Австрии |
| zh-Hans | Китайский упрощённый |
| zh-Hant | Китайский традиционный |
| x-default | Страница для неопределённого региона или языка |
Способы внедрения
Hreflang можно внедрить тремя способами. Выбор зависит от технологии сайта и его масштаба.
1. HTML-тег в секции head
Самый распространённый способ. Теги <link rel="alternate" hreflang="..."> добавляют в <head> каждой страницы. Важно: все версии страницы должны ссылаться на все остальные версии, включая саму себя.
<!-- Page /en/about — links to ALL versions -->
<head>
<link rel="alternate" hreflang="en" href="https://example.com/en/about/" />
<link rel="alternate" hreflang="ru" href="https://example.com/about/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/about/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/about/" />
<link rel="canonical" href="https://example.com/en/about/" />
</head>2. HTTP-заголовок Link
Для PDF, изображений и других не-HTML ресурсов используют HTTP-заголовки. Этот способ подходит и для любых страниц, но требует настройки сервера.
# Nginx: add hreflang via HTTP headers
add_header Link '</en/about/>; rel="alternate"; hreflang="en", </about/>; rel="alternate"; hreflang="ru", </de/about/>; rel="alternate"; hreflang="de"';3. XML-карта сайта
Оптимальный вариант для крупных сайтов (10 000+ страниц). Все hreflang-связи описываются в sitemap: это разгружает HTML и централизует управление.
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://example.com/en/about/</loc>
<xhtml:link rel="alternate" hreflang="en"
href="https://example.com/en/about/"/>
<xhtml:link rel="alternate" hreflang="ru"
href="https://example.com/about/"/>
<xhtml:link rel="alternate" hreflang="de"
href="https://example.com/de/about/"/>
<xhtml:link rel="alternate" hreflang="x-default"
href="https://example.com/en/about/"/>
</url>
</urlset>x-default: страница выбора языка
Значение x-default указывает страницу для пользователей, чей язык или регион не совпадает ни с одним из указанных вариантов. Google покажет эту версию, когда подходящего hreflang нет.
- Страница выбора языка — пользователь попадает на
/choose-language/и выбирает версию сам - Основная версия сайта — чаще всего английская или та, которую Google должен показывать по умолчанию
- Главная страница — если у сайта несколько языков, x-default указывает на
/
Canonical + hreflang
Canonical и hreflang решают разные задачи, но работают вместе. Правило простое: если на странице есть hreflang, canonical всегда указывает на саму страницу (self-referencing canonical).
<!-- CORRECT: canonical points to self + hreflang covers all versions -->
<link rel="canonical" href="https://example.com/en/about/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/about/" />
<link rel="alternate" hreflang="ru" href="https://example.com/about/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/about/" />
<!-- WRONG: canonical points to a different language version -->
<link rel="canonical" href="https://example.com/ru/about/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/about/" />Если canonical английской страницы указывает на русскую версию, Google воспримет английскую страницу как дубликат и не включит её в индекс. Поэтому hreflang без самоссылающегося canonical практически бесполезен.
Типичные ошибки
По данным аудитов, около 60% сайтов с hreflang содержат как минимум одну критическую ошибку. Вот самые частые.
Ошибка 1: отсутствие взаимных ссылок
Самая распространённая проблема. Страница A ссылается на страницу B через hreflang, а B не ссылается обратно на A. Google игнорирует такой hreflang: без взаимности он недействителен.
Ошибка 2: неверные языковые коды
hreflang="en_US"с подчёркиванием вместо дефиса — невалидный кодhreflang="english"— слово вместо ISO-кодаhreflang="zh"вместоhreflang="zh-Hans"илиhreflang="zh-Hant"— для китайского нужен уточняющий скриптhreflang="ru-RU"вместоhreflang="ru"— лишний код региона для языка без диалектов
Ошибка 3: hreflang на неиндексируемых страницах
Если страница заблокирована в robots.txt или помечена noindex, hreflang для неё бессмысленен. Google не будет обрабатывать hreflang на страницах, которые не может проиндексировать.
Ошибка 4: автоматические редиректы по языку
Некоторые сайты перенаправляют пользователя по языку браузера: посетитель из России запрашивает /about/ и попадает на /ru/about/. Google видит 301-редирект и не может корректно обработать hreflang. Решение: отдавать контент без редиректа, переключать языки через JavaScript или cookie.
Ошибка 5: hreflang ведёт на 404 или редиректы
В hreflang должны быть финальные канонические URL. Ссылки через редирект или на страницу 404 делают атрибут недействительным для этой версии.
Инструменты проверки
| Инструмент | Что проверяет | Стоимость |
|---|---|---|
| Google Search Console | Ошибки hreflang в отчёте «Международный таргетинг» | Бесплатно |
| Aleyda Solis hreflang tool | Валидность тегов для одной страницы, взаимность ссылок | Бесплатно |
| TechnicalSEO hreflang checker | Пакетная проверка, экспорт ошибок | Бесплатно / платно |
| Screaming Frog | Полное сканирование с анализом hreflang | Платно |
| Ahrefs Site Audit | Ошибки hreflang в рамках SEO-аудита | Платно |
| Semrush Site Audit | Отдельный отчёт по hreflang | Платно |
Частые вопросы
Влияет ли hreflang на позиции в поиске?
Нужен ли hreflang на каждой странице сайта?
Что будет, если hreflang указывает на URL с 301-редиректом?
Можно ли указывать hreflang только в sitemap, без HTML?
Сколько времени Google обрабатывает новый hreflang?
Check it with SpiderHead
Free and local: run the audit on your own machine.



