Зачем нужен hreflang
Если у вас есть русская, английская и немецкая версии одной страницы, поисковая система должна понимать, что это не три разных документа и не дубли, а варианты одного и того же для разной аудитории. Атрибут hreflang объясняет эту связь и подсказывает системе, какую версию показывать пользователю с учётом его языка и региона.
Как выглядит разметка
<link rel="alternate" hreflang="ru" href="https://example.com/ru/delivery/">
<link rel="alternate" hreflang="en" href="https://example.com/en/delivery/">
<link rel="alternate" hreflang="de" href="https://example.com/de/delivery/">
<link rel="alternate" hreflang="x-default" href="https://example.com/delivery/">
Каждая строка — одна версия страницы. Важно: этот набор строк размещается на каждой из версий и включает все версии, в том числе саму текущую.
Коды языков и регионов
Значение состоит из кода языка и, при необходимости, кода региона через дефис.
| Значение | Что означает | Замечание |
|---|---|---|
ru | Русский язык | Любой регион |
ru-RU | Русский для России | Язык и регион |
en-GB | Английский для Великобритании | Не en-UK |
uk-UA | Украинский для Украины | Код языка — uk, не ua |
kk-KZ | Казахский для Казахстана | Код языка — kk |
x-default | Версия по умолчанию | Для выбора языка или запасной версии |
Язык указывается по стандарту ISO 639-1, регион — по ISO 3166-1. Регион без языка указывать нельзя.
Три способа размещения
| Способ | Где размещается | Когда подходит |
|---|---|---|
Теги в <head> | В коде каждой страницы | Небольшое число версий |
| HTTP-заголовок | В ответе сервера | Файлы, не являющиеся страницами, например PDF |
| Карта сайта | В файле sitemap.xml | Много версий или страниц — см. hreflang в карте сайта |
Обязательные правила
- Взаимность. Если страница A указывает на B, то B обязана указывать на A.
- Ссылка на себя. Каждая версия включает в набор и собственный адрес.
- Полные адреса. Указываются абсолютные URL с протоколом.
- Рабочие страницы. Адреса не должны вести на редиректы, ошибки или закрытые от индексации страницы.
- Один способ. Не смешивайте разные способы указания для одних и тех же страниц.
О том, как избежать типичных ошибок, — в статье про ошибки hreflang. Выбор структуры адресов для версий описан в статье про мультиязычный сайт.
Пошаговое внедрение
- Составьте таблицу версий: для каждой страницы — её адреса на всех языках и регионах.
- Выберите способ указания: теги, заголовки или карту сайта.
- Сформируйте наборы программно из этой таблицы, чтобы взаимность обеспечивалась автоматически.
- Проверьте несколько групп вручную и весь сайт краулером.
- Закрепите процесс: при добавлении страницы или языка таблица версий обновляется первой.
Hreflang и региональные настройки в панелях
В панелях вебмастера есть отдельные настройки региональной привязки сайта. Они дополняют hreflang, но не заменяют его: атрибут описывает связи между конкретными страницами, а настройки панели относятся к сайту в целом. Используйте оба механизма согласованно и не создавайте противоречий между ними.
Частые вопросы
Нужно ли указывать hreflang на странице, если у неё нет других версий?
Нет: атрибут нужен, когда у страницы есть версии для других языков или регионов.
Обязательно ли включать в набор адрес текущей страницы?
Да: каждая версия должна ссылаться и на себя, и на остальные версии из группы.
Можно ли указать только регион, без языка?
Нет: значение начинается с кода языка, а регион добавляется к нему через дефис.
Готовый адрес можно собрать прямо сейчас: откройте генератор ЧПУ — он транслитерирует фразу по таблице Яндекса, уберёт служебные слова и покажет длину адреса.