Как настроить hreflang и избежать типичных ошибок
Практика3 минРедакция Innovialabs
Коротко
hreflang сообщает поисковику, какие страницы — переводы друг друга. Каждая версия должна ссылаться на все остальные и на себя, с корректными кодами и абсолютными URL, иначе разметка игнорируется.
Что делает hreflang
Атрибут hreflang связывает языковые и региональные версии одной страницы. Благодаря ему поисковик показывает пользователю версию на его языке, а не случайную. hreflang не повышает позиции сам по себе и не запрещает индексацию — это подсказка о том, какой URL кому показывать.
Разметку можно разместить одним из трёх способов. Выберите один и не смешивайте их без необходимости.
Способ 1: теги в HTML
В <head> каждой версии страницы перечисляются все версии, включая её саму:
<link rel="alternate" hreflang="ru" href="https://site.com/ru/pricing/" />
<link rel="alternate" hreflang="en" href="https://site.com/en/pricing/" />
<link rel="alternate" hreflang="uz" href="https://site.com/uz/pricing/" />
<link rel="alternate" hreflang="x-default" href="https://site.com/en/pricing/" />
Этот блок одинаков на всех трёх страницах. Самый наглядный вариант для сайтов с небольшим числом языков.
Способ 2: HTTP-заголовок
Подходит для файлов без HTML, например PDF:
Link: <https://site.com/ru/guide.pdf>; rel="alternate"; hreflang="ru",
<https://site.com/en/guide.pdf>; rel="alternate"; hreflang="en"
Способ 3: sitemap
Удобно для больших сайтов: разметка не утяжеляет страницы и управляется централизованно.
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://site.com/ru/pricing/</loc>
<xhtml:link rel="alternate" hreflang="ru" href="https://site.com/ru/pricing/"/>
<xhtml:link rel="alternate" hreflang="en" href="https://site.com/en/pricing/"/>
<xhtml:link rel="alternate" hreflang="uz" href="https://site.com/uz/pricing/"/>
</url>
<!-- такой же <url> для /en/ и /uz/ -->
</urlset>
Коды языков и регионов
- Язык — код ISO 639-1:
ru,en,uz. - Регион (необязательно) — код страны ISO 3166-1 alpha-2 после дефиса:
ru-UZ,en-GB. - Регион без языка не допускается:
hreflang="UZ"— ошибка. - Порядок важен: сначала язык, потом страна.
uz-RUозначает «узбекский для России», а не наоборот. - Для письменности можно указать скрипт:
uz-Latn,uz-Cyrl, если у вас обе версии.
x-default
x-default — версия для всех, кому не подошла ни одна из перечисленных. Обычно это английская страница или страница выбора языка. Он не обязателен, но полезен, если у вас есть такой «запасной» вариант.
Чек-лист правильной настройки
- Взаимность. Если страница A ссылается на B, то B обязана ссылаться на A. Без обратной ссылки пара игнорируется.
- Ссылка на себя. Каждая страница включает себя в список.
- Абсолютные URL с протоколом:
https://site.com/en/, а не/en/. - Канонические адреса. URL в hreflang должны совпадать с canonical этих страниц и отдавать код 200.
- Соответствие страниц. Связываются переводы одной и той же страницы, а не все страницы с главной.
Типичные ошибки
| Ошибка | Последствие |
|---|---|
| Нет обратных ссылок | Связь не учитывается |
hreflang="en-UK" | Неверный код страны, правильно en-GB |
| Canonical всех версий указывает на одну | Переводы выпадают из индекса |
| В hreflang URL с редиректом или 404 | Сигнал теряется |
| Разметка добавлена только на главную | Внутренние страницы без связей |
| Разные наборы языков на разных версиях | Противоречивые сигналы |
Как проверить
- Откройте исходный код нескольких страниц каждой версии и сверьте наборы ссылок.
- Используйте краулер сайта, который умеет проверять взаимность hreflang.
- Смотрите отчёты по международному таргетингу и индексации в панелях вебмастера.
Подробная спецификация есть в документации Google.