Как работает тег hreflang: полный разбор синтаксиса

Тег hreflang — это элемент в коде страницы, который сообщает поисковым системам о наличии альтернативных версий контента на разных языках и для разных географических регионов.

Структура link rel alternate hreflang

Тег hreflang работает внутри элемента link с атрибутом rel=«alternate». Вся конструкция выглядит так:

<link rel="alternate" hreflang="код-языка" href="URL-версии">

Каждый компонент несет смысл:

rel=«alternate» — указывает поисковым системам, что это альтернативная версия страницы. Атрибут rel=«alternate» обязателен для всех hreflang тегов.

hreflang=«код» — это атрибут hreflang, который содержит код языка или комбинацию языка и страны (например, en, en-US, de-DE). Google использует этот атрибут hreflang для определения целевой аудитории версии страницы.

href=«URL» — полный URL версии страницы. Это абсолютный адрес, например https://example.com/en/ или https://example.com/de/.

Все три части обязательны. Hreflang тег должен находиться в разделе <head> HTML-документа рядом с другими meta-тегами.

ISO 639-1: коды языков для hreflang

Стандарт ISO 639-1 определяет двухбуквенные коды для основных языков мира. Для настройки hreflang нужно указывать именно коды языков из этого стандарта.

Основные коды языков для hreflang:

en — английский язык (используется, когда версия страницы универсальна для всех англоговорящих пользователей)

de — немецкий язык

ru — русский язык

fr — французский язык

es — испанский язык

it — итальянский язык

ja — японский язык

zh — китайский язык

pt — португальский язык

nl — голландский язык

ko — корейский язык

sv — шведский язык

pl — польский язык

tr — турецкий язык

ar — арабский язык

Это основные коды языков, которые покрывают большинство случаев оптимизации многоязычных сайтов. Полный список кодов языков содержит более 180 наименований, но для интернет-проектов обычно достаточно 10–15 основных вариантов.

ISO 3166-1: коды стран для региональных версий

Когда на одном языке нужно указать разные страны, используются коды стран стандарта ISO 3166-1. Это двухбуквенные коды для каждого государства и региона.

Основные коды стран для hreflang:

US — США

GB — Великобритания

DE — Германия

AT — Австрия

CH — Швейцария

FR — Франция

CA — Канада

AU — Австралия (австралийская версия для англоязычного контента)

NZ — Новая Зеландия

IE — Ирландия

SG — Сингапур

HK — Гонконг

JP — Япония

CN — Китай

BR — Бразилия

MX — Мексика

ES — Испания

IN — Индия

ZA — Южная Африка

SE — Швеция

Эти коды стран позволяют указать специфические версии сайта для разных регионов, даже если контент на одном языке. Например, en-US для США и en-GB для Великобритании — это разные версии англоязычного контента.

Как комбинировать языковые и региональные коды

Существует два способа указывать коды языков и стран в атрибуте hreflang:

Только язык — используется, когда версия страницы подходит для всех стран, говорящих на этом языке. Пример: hreflang=«en» для универсальной англоязычной версии сайта, hreflang=«de» для универсальной немецкоязычной версии.

Язык с регионом — комбинация кода языка и кода страны через дефис. Пример: hreflang=«en-US» для версии сайта конкретно для США, hreflang=«en-GB» для Великобритании, hreflang=«de-AT» для Австрии, hreflang=«fr-CA» для франкоговорящей части Канады.

Регион добавляют только тогда, когда для одного языка существуют отдельные версии для разных стран. Для универсальной версии достаточно кода языка.

Часто разработчики ошибаются, смешивая подходы. Например, указывают hreflang=«en-EN» (что неправильно — ISO 3166-1 для Англии — это GB, а не EN) или hreflang=«english» вместо hreflang=«en».

x-default версия hreflang

Атрибут hreflang=«x-default» — это специальная версия тега, которая указывает на вариант страницы для пользователей, язык и регион которых не указаны явно. Это fallback-версия для всех остальных.

<link rel="alternate" hreflang="x-default" href="https://example.com/">

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

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

  • Главная версия сайта на английском языке с hreflang=«en-US»
  • Версии для других стран: hreflang=«en-GB», hreflang=«de-DE», hreflang=«ja-JP»
  • x-default указывает на главную версию как fallback для всех остальных пользователей

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

Пример 1: две языковые версии (английский и русский)

<link rel="alternate" hreflang="en" href="https://example.com/en/">
<link rel="alternate" hreflang="ru" href="https://example.com/ru/">
<link rel="alternate" hreflang="x-default" href="https://example.com/en/">

На каждой странице указывают ссылки на себя и остальные соответствующие языковые версии. x-default можно добавить отдельной ссылкой на страницу выбора языка или вариант по умолчанию.

Пример 2: две страны на одном языке (США и Великобритания)

<link rel="alternate" hreflang="en-US" href="https://example.com/us/">
<link rel="alternate" hreflang="en-GB" href="https://example.com/gb/">
<link rel="alternate" hreflang="x-default" href="https://example.com/us/">

На версии для США указывают hreflang=«en-US» как основную, плюс ссылку на британскую версию с hreflang=«en-GB». На британской версии наоборот.

Пример 3: полный hreflang с несколькими версиями

<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="de-DE" href="https://example.com/de/">
<link rel="alternate" hreflang="fr-FR" href="https://example.com/fr/">
<link rel="alternate" hreflang="x-default" href="https://example.com/en-us/">

В этом примере на каждой странице сайта указывают все пять тегов link: четыре альтернативные версии для разных языков и регионов, плюс один x-default как fallback. Это позволяет Google и другим поисковым системам полностью понять структуру вашего многоязычного контента.

Hreflang в XML sitemap

Помимо HTML, теги hreflang можно добавлять в XML-формате в файл sitemap. Это особенно полезно для больших сайтов с множеством версий страницы.

<url>
  <loc>https://example.com/en-us/product</loc>
  <xhtml:link rel="alternate" hreflang="en-US" href="https://example.com/en-us/product"></xhtml:link>
  <xhtml:link rel="alternate" hreflang="en-GB" href="https://example.com/en-gb/product"></xhtml:link>
  <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/en-us/product"></xhtml:link>
</url>

В XML sitemap используется пространство имён xhtml для корректного указания альтернативных версий страницы сайта.

HTTP-заголовки Link для hreflang

Альтернативный способ указать hreflang — через HTTP-заголовки. Это полезно для PDF-файлов, изображений и других ресурсов, где нельзя добавить HTML-теги link. Заголовок выглядит как:

Link: <https://example.com/en/>; rel="alternate"; hreflang="en", <https://example.com/ru/>; rel="alternate"; hreflang="ru"

Google и другие поисковые системы распознают hreflang и в формате HTTP-заголовков, поэтому это равнозначный способ настройки для определённых типов контента.

Справочная таблица основных кодов языков ISO 639-1

Язык Код Примеры использования
Английский en en, en-US, en-GB
Русский ru ru, ru-RU
Немецкий de de, de-DE, de-AT
Французский fr fr, fr-FR, fr-CA
Испанский es es, es-ES, es-MX
Итальянский it it, it-IT
Португальский pt pt, pt-BR, pt-PT
Голландский nl nl, nl-NL, nl-BE
Японский ja ja, ja-JP
Китайский zh zh, zh-CN, zh-HK
Корейский ko ko, ko-KR
Турецкий tr tr, tr-TR
Шведский sv sv, sv-SE
Польский pl pl, pl-PL
Арабский ar ar, ar-SA

Справочная таблица основных кодов стран ISO 3166-1

Страна Код Часто используется с языком
США US en-US
Великобритания GB en-GB
Канада CA en-CA, fr-CA
Австралия AU en-AU
Новая Зеландия NZ en-NZ
Ирландия IE en-IE
Германия DE de-DE
Австрия AT de-AT
Швейцария CH de-CH, fr-CH
Франция FR fr-FR
Испания ES es-ES
Мексика MX es-MX
Бразилия BR pt-BR
Португалия PT pt-PT
Япония JP ja-JP
Китай CN zh-CN
Гонконг HK zh-HK
Сингапур SG en-SG, zh-SG
Индия IN en-IN
Южная Африка ZA en-ZA

Типичные ошибки при использовании hreflang

Несоответствие кодов стандартам ISO — указание неправильных кодов (например, «english» вместо «en», или «en-EN» вместо «en-GB») приводит к тому, что Google игнорирует hreflang теги полностью.

Отсутствие взаимных ссылок — если на версии для США указан hreflang=«en-US», то на версии для Великобритании обязательно должна быть обратная ссылка с hreflang=«en-US». Без взаимных ссылок поисковые системы не полностью понимают структуру контента.

x-default необязателен. Его отсутствие не делает набор hreflang ошибочным, если языковые версии указаны правильно.

Неправильная структура URL — убедитесь, что все URL в атрибуте href указаны полностью с протоколом https:// и завершаются одинаково (все со слешем или все без).

Смешивание способов — добавление hreflang одновременно в HTML, XML sitemap и HTTP-заголовки для одних и тех же версий страницы может привести к конфликтам. Выбирайте один способ и придерживайтесь его.

Как проверить коды hreflang

Для массовой проверки используйте инструменты для проверки hreflang:

  • SEMrush
  • Ahrefs
  • Screaming Frog
  • Lighthouse (Google)

Эти инструменты помогают найти ошибки в hreflang тегах и понять, какие версии страницы не видит Google.