Техническое SEO

Hreflang: полное руководство по международному SEO

Hreflang: руководство по международному SEO

Атрибут hreflang — фундамент мультиязычного SEO. Без него Google показывает не ту версию страницы не тому пользователю. Разбираем синтаксис, архитектуру, типичные ошибки и инструменты проверки.

Hreflang — HTML-атрибут, который сообщает поисковым системам, для какого языка и региона предназначена каждая версия страницы. Google использует эти данные, чтобы показывать пользователям именно ту версию контента, которая соответствует их языку и географии.

Без hreflang Google пытается угадать нужную версию самостоятельно — и часто ошибается: русскоязычный пользователь получает английскую страницу, а немец видит французскую версию. Это снижает CTR, увеличивает bounce rate и потери конверсии.

Hreflang связывает языковые версии страницы взаимными ссылками — каждая страница должна явно указывать на все остальные.
Hreflang влияет на то, какая версия страницы показывается пользователю, но не на само ранжирование. Google не штрафует за его отсутствие, но без него теряется релевантность показов.

Что такое hreflang

Как hreflang связывает языковые версии сайта.

Атрибут hreflang появился в 2011 году — Google ввёл его для решения проблемы дублированного контента на международных сайтах. Если страница /about существует в версиях /en/about, /de/about и /fr/about, Google не должен расценивать их как дубликаты — каждая служит отдельной аудитории.

2011

Год появления

Google ввёл hreflang для мультиязычных сайтов

179+

Кодов регионов

ISO 3166-1 alpha-2 поддерживает Googe

100%

Взаимность

Все версии страницы должны ссылаться друг на друга

≤ 10ms

Влияние на скорость

Правильно реализованный hreflang не замедляет сайт

Hreflang поддерживает только Google и Yandex. Bing использует Content-Language мета-тег и HTTP-заголовки, но работает со структурой URL и геотаргетингом через инструменты веб-мастера. Если ваша аудитория — Рунет, hreflang всё равно нужен для корректной работы Яндекса.

Когда нужен hreflang

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

СитуацияНужен hreflangКомментарий
Один язык, разные страны (en-US, en-GB)ДаРазный контент (цены, правописание, акции)
Разные языки (ru, en, de)ДаОсновной сценарий использования hreflang
Один язык, один регионНетНет смысла дублировать ссылки на себя
Контент идентичен на всех языкахНетНет смысла — используйте canonical
Частичный перевод (70%+ контента)ДаДаже неполный перевод требует разметки
Автоматический перевод без редактурыНетGoogle может расценить как спам
Если контент двух версий страницы полностью идентичен (например, /en-us/ и /en-gb/ без каких-либо различий), лучше использовать canonical, а не hreflang.

Синтаксис и форматы

Hreflang использует коды из двух стандартов: ISO 639-1 для языка и ISO 3166-1 alpha-2 для региона. Формат: язык или язык-РЕГИОН.

HTML
<!-- Только язык -->
<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/" />

<!-- Язык + регион -->
<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: страница для пользователей без подходящего варианта -->
<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> каждой страницы. Важно: все версии страницы должны ссылаться на все остальные версии, включая себя.

HTML
<!-- Страница /en/about — ссылается на ВСЕ версии -->
<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
# Nginx: добавить hreflang в HTTP-заголовки
add_header Link '</en/about/>; rel="alternate"; hreflang="en", </about/>; rel="alternate"; hreflang="ru", </de/about/>; rel="alternate"; hreflang="de"';

3. Sitemap XML

Оптимальный способ для крупных сайтов (10 000+ страниц). Все hreflang-связи описываются в sitemap — это снижает нагрузку на HTML и упрощает управление.

XML
<?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>
  <url>
    <loc>https://example.com/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>
Нельзя смешивать методы: если hreflang реализован в HTML, не добавляйте его одновременно в sitemap — Google обработает оба источника, что может создать конфликты.

x-default: страница выбора языка

Значение x-default указывает страницу для пользователей, чей язык или регион не соответствует ни одному из заявленных вариантов. Google показывает эту версию, когда нет подходящего hreflang.

Типичные варианты использования x-default:

  • Страница выбора языка — пользователь попадает на /choose-language/ и сам выбирает версию
  • Основная версия сайта — чаще всего английская или та, которую Google должен показывать по умолчанию
  • Главная страница — если сайт имеет несколько языков, x-default указывает на /
x-default — не обязательный элемент, но Google настоятельно рекомендует его добавлять. Без него пользователи без подходящей локали получают «первую попавшуюся» версию из индекса.

Canonical + hreflang

Canonical и hreflang решают разные задачи, но работают вместе. Правило простое: canonical всегда указывает на себя (self-referencing canonical), когда на странице есть hreflang.

ТегЗадачаКак использовать с hreflang
canonicalУказывает предпочтительный URL для индексацииВсегда на саму страницу (self-referential)
hreflangСвязывает языковые версии страницыНа все версии, включая текущую
Пример реализации hreflang в HTML <head>:
HTML
<!-- ПРАВИЛЬНО: canonical на себя + hreflang на все версии -->
<link rel="canonical" href="https://example.com/ru/about/" />
<link rel="alternate" hreflang="ru" href="https://example.com/ru/about/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/about/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/about/" />

<!-- ОШИБКА: canonical на другую языковую версию -->
<link rel="canonical" href="https://example.com/en/about/" />
<link rel="alternate" hreflang="ru" href="https://example.com/ru/about/" />

Если canonical русской страницы указывает на английскую версию — Google воспримет русскую страницу как дубликат и не включит её в индекс. Именно поэтому hreflang без self-referencing canonical практически бесполезен.

Типичные ошибки

По данным аудитов, около 60% сайтов с hreflang имеют хотя бы одну критическую ошибку. Разберём наиболее частые.

Ошибка 1: отсутствие взаимных ссылок

Самая распространённая проблема. Страница A ссылается на страницу B через hreflang, но страница B не ссылается обратно на страницу A. Google игнорирует такой hreflang — он недействителен без взаимности.

HTML
<!-- Страница /en/about/ — ОШИБКА: нет ссылки на /ru/about/ -->
<link rel="alternate" hreflang="en" href="https://example.com/en/about/" />
<!-- Здесь должна быть ссылка на ru-версию! -->

<!-- Страница /ru/about/ — ссылается на en, но en не ссылается назад -->
<link rel="alternate" hreflang="en" href="https://example.com/en/about/" />
<link rel="alternate" hreflang="ru" href="https://example.com/ru/about/" />

Ошибка 2: неправильные языковые коды

  • hreflang="ru-RU" вместо hreflang="ru" — ненужное уточнение региона для языка без диалектов
  • hreflang="en_US" с подчёркиванием вместо дефиса — невалидный код
  • hreflang="english" — слово вместо ISO-кода
  • hreflang="zh" вместо hreflang="zh-Hans" или hreflang="zh-Hant" — китайский нужно уточнять

Ошибка 3: hreflang на неиндексируемые страницы

Если страница заблокирована в robots.txt или помечена noindex — hreflang для неё бессмысленен. Google не будет обрабатывать hreflang со страниц, которые не может индексировать.

Ошибка 4: возврат 301-редиректа вместо контента

Часть сайтов настраивает автоматический редирект на основе языка браузера: пользователь из России запросил /about/ — его редиректят на /ru/about/. Google видит 301 и не может корректно обработать hreflang. Решение: отдавать контент без редиректа, использовать JavaScript-переключение или cookie.

Ошибка 5: ссылки на 404 или редиректы

В hreflang должны указываться финальные, канонические URL. Ссылка через редирект или на страницу 404 делает атрибут недействительным для этой версии.

После любых изменений структуры URL (переименование, редиректы, удаление страниц) нужно обновить все hreflang-ссылки. Это одна из причин, по которой крупные сайты предпочитают реализацию через sitemap — обновление централизовано.

Инструменты проверки

Ручная проверка hreflang на больших сайтах невозможна — нужны инструменты автоматизации.

ИнструментЧто проверяетСтоимость
Google Search ConsoleОшибки hreflang в отчёте «Международный таргетинг»Бесплатно
Aleyda Solis hreflang toolВалидность тегов для одной страницы, взаимность ссылокБесплатно
TechnicalSEO hreflang checkerПакетная проверка, экспорт ошибокБесплатно / платно
Screaming FrogПолный краулинг с анализом hreflangПлатно
Ahrefs Site AuditОшибки hreflang в рамках SEO-аудитаПлатно
Semrush Site AuditОтдельный отчёт по hreflangПлатно

Google Search Console — первый инструмент для проверки. Раздел «Настройки» → «Международный таргетинг» → вкладка «Язык» показывает страницы с ошибками hreflang и причины (неизвестный язык, несуществующая страница, отсутствие взаимности).

Screaming Frog — наиболее мощный инструмент для краулинга hreflang. Он проверяет взаимность ссылок, находит битые URL в тегах, выявляет конфликты canonical + hreflang. Незаменим для сайтов от 1000 страниц.

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

Нет — hreflang не является прямым фактором ранжирования. Он влияет на то, какая версия страницы показывается конкретному пользователю, но не на саму позицию в выдаче. Однако корректная реализация косвенно улучшает метрики: снижается bounce rate, растёт time-on-site и конверсия, потому что пользователь видит релевантную ему версию.
Только для страниц, у которых есть аналоги на других языках. Служебные страницы (login, checkout, API-роуты), страницы с noindex и страницы без языковых дублей hreflang не нуждаются.
Google попытается следовать по редиректу, но результат непредсказуем. Часть парсеров hreflang остановится на промежуточном URL. Рекомендуется всегда указывать финальный канонический URL без редиректов.
Да — это даже предпочтительный подход для больших сайтов. Google официально поддерживает оба метода. Главное — не использовать оба одновременно на одних и тех же страницах.
Обычно от нескольких дней до нескольких недель — зависит от частоты краулинга сайта. Для ускорения: добавьте sitemap с hreflang в Google Search Console и запросите переиндексацию ключевых страниц.