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

Как спланировать языковые и региональные версии, внедрить взаимные hreflang-аннотации и проверить, что каждый URL отдаётся нужной аудитории.

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

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

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, которые поддерживает Google

100%

Взаимность

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

≤ 10 мс

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

Корректно внедрённый 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.

html
<!-- 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> каждой страницы. Важно: все версии страницы должны ссылаться на все остальные версии, включая саму себя.

html
<!-- 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
# 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
<?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>
Не смешивайте способы: если hreflang реализован в HTML, не добавляйте его ещё и в sitemap. Google обработает оба источника, и это может породить конфликты.

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

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

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

Canonical + hreflang

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

html
<!-- 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 на каждой странице сайта?
Только на страницы, у которых есть аналоги на других языках. Служебные страницы (логин, оформление заказа, API-роуты), страницы с noindex и страницы без языковых аналогов hreflang не нужен.
Что будет, если hreflang указывает на URL с 301-редиректом?
Google попытается пройти по редиректу, но результат непредсказуем. Некоторые парсеры hreflang остановятся на промежуточном URL. Всегда указывайте финальный канонический URL без редиректов.
Можно ли указывать hreflang только в sitemap, без HTML?
Да. Для крупных сайтов это даже предпочтительный подход. Google официально поддерживает оба метода. Главное — не использовать оба на одних и тех же страницах.
Сколько времени Google обрабатывает новый hreflang?
Обычно от нескольких дней до нескольких недель — в зависимости от частоты сканирования сайта. Чтобы ускорить процесс, добавьте sitemap с hreflang в Google Search Console и запросите переиндексацию ключевых страниц.

Check it with SpiderHead

Free and local: run the audit on your own machine.

Try it