Logo
Hreflang для многоязычного сайта: как настроить без типичных ошибок

Hreflang для многоязычного сайта: как настроить без типичных ошибок

Hreflang подсказывает Google, какую языковую или региональную версию страницы кому показывать: пользователю с украинским интерфейсом отдать /ua/, с английским /en/. Без этой разметки многоязычный сайт часто ранжируется «не той» версией: в выдаче для Польши всплывает украинская страница, а английская вообще не воспринимается как отдельная. Ниже разбираем, что атрибут hreflang делает на самом деле, три способа его прописать, какие коды языков и регионов корректны, и где многоязычные сайты обычно ломают разметку.

SEO-специалист проверяет теги hreflang многоязычного сайта в коде страницы на экране ноутбука

Что делает hreflang и чего он не делает

Атрибут hreflang связывает между собой страницы с одинаковым содержанием на разных языках или для разных стран. Google читает эту связь и для каждой страны или языка интерфейса подставляет в выдачу наиболее подходящую версию. Ключевое слово здесь «подставляет»: все версии уже должны быть проиндексированы, hreflang лишь помогает выбрать одну из них под конкретного пользователя.

Чего hreflang не делает, и именно здесь больше всего путаницы:

  • Не перенаправляет. Это не редирект и не замена автоматического выбора языка на сайте. Человек попадёт туда, куда кликнул.
  • Не переводит и не оценивает качество перевода. Если на странице /en/ остался украинский текст, Google это увидит, а hreflang ничем не поможет.
  • Не собирает версии в одну для ранжирования. Каждая страница ранжируется сама по себе, разметка только убирает конкуренцию между ними за одного пользователя.
  • Не заменяет canonical. Это два разных сигнала, и работают они только вместе и без противоречий.

Практический вывод простой. Если у вас один язык и один рынок, hreflang не нужен вовсе. Он нужен, когда есть хотя бы две языковые версии или один язык для нескольких стран с разными ценами или доставкой (en-US и en-GB, например).

Три способа указать hreflang: какой выбрать

Google принимает разметку из трёх источников, и все три равноценны. Выбирать нужно один способ на весь сайт, потому что смешивание даёт конфликты, которые потом трудно найти.

Тег link в head страницы

Самый распространённый вариант для сайтов на CMS. На каждой версии страницы в <head> перечисляют все версии, включая её саму:

<link rel="alternate" hreflang="uk" href="https://site.ua/ua/dostavka/" />
<link rel="alternate" hreflang="ru" href="https://site.ua/dostavka/" />
<link rel="alternate" hreflang="en" href="https://site.ua/en/delivery/" />
<link rel="alternate" hreflang="x-default" href="https://site.ua/ua/dostavka/" />

Плюс: видно в коде, легко проверить глазами. Минус: на сайте с 20 000 страниц и пятью языками каждая страница получает пять-шесть строк, поэтому это должна генерировать CMS, а не руки.

HTTP-заголовок Link

Для файлов без HTML, например PDF-каталогов, в ответе сервера отдают заголовок:

Link: <https://site.ua/ua/catalog.pdf>; rel="alternate"; hreflang="uk", <https://site.ua/en/catalog.pdf>; rel="alternate"; hreflang="en"

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

Разметка в sitemap.xml

Каждый <url> в карте сайта дополняют элементами <xhtml:link> со списком всех версий. Пример для одной страницы:

<url><loc>https://site.ua/ua/dostavka/</loc><xhtml:link rel="alternate" hreflang="uk" href="https://site.ua/ua/dostavka/"/><xhtml:link rel="alternate" hreflang="en" href="https://site.ua/en/delivery/"/></url>

Плюс: HTML страниц не «пухнет», всё лежит в одном файле, который удобно генерировать и проверять скриптом. Минус: карта растёт, и на больших каталогах её приходится дробить на несколько файлов. Мы в Query для магазинов с десятками тысяч страниц чаще выбираем именно sitemap, для небольших сайтов услуг удобнее link в head.

x-default и взаимность: два правила, без которых разметка не работает

Взаимность означает: если страница A указывает на страницу B как на английскую версию, то страница B должна указывать на A как на украинскую. Одностороннюю связь Google игнорирует полностью, и это самая частая причина, почему «hreflang прописали, а ничего не изменилось». Проверять нужно именно пары, а не отдельные страницы.

x-default говорит, какую версию показывать тем, чей язык и страна не совпадают ни с одной из перечисленных. Для украинского сайта с uk/ru/en логично отдавать в x-default либо английскую версию (для иностранцев), либо страницу выбора языка, если она есть. Ставить x-default на украинскую тоже допустимо: тогда неопределённые пользователи увидят основную версию. Главное, чтобы x-default был один и вёл на реальную страницу с кодом 200.

Какие коды языков и регионов писать

Язык записывается по ISO 639-1 (две буквы), регион по ISO 3166-1 Alpha-2 после дефиса. Регион без языка указывать нельзя: hreflang="UA" невалиден, нужно uk-UA. Больше всего ошибок делают с украинским: его код uk, а не ua. Значение ua это домен, а не язык, и Google его не распознаёт.

КодЧто означаетКогда уместен
ukУкраинский, любая странаСтандарт для украинской версии
uk-UAУкраинский для УкраиныТолько при наличии другой украинской версии
ruРусский, любая странаВерсия без привязки к стране
enАнглийский, любая странаОдин английский для всех
en-GB, en-USАнглийский для Британии / СШАРазные цены, валюта, доставка
x-defaultВерсия «для всех остальных»Один раз в каждом наборе

Если у вас одна английская версия, пишите просто en. Дописывать регион «про запас» не стоит: en-US сужает аудиторию, и британский пользователь формально под неё не попадает, хотя Google и пытается подобрать ближайший язык.

Оставьте заявку

Укажите ваше имя и email, наши менеджеры свяжутся с Вами в ближайшее время
Отправляя форму, вы соглашаетесь с политикой конфиденциальности.

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

По нашим наблюдениям, на большинстве сайтов, которые приходят на техническую оптимизацию, разметка либо есть с ошибками, либо её нет вообще. Ошибки повторяются от сайта к сайту.

ОшибкаЧем грозитКак исправить
Нет обратной ссылкиGoogle игнорирует паруОдин список версий для всех страниц
Ведёт на неканоническую страницуСигналы противоречатТолько канонические URL
Относительные URLРазметка невалиднаАбсолютные адреса с доменом
Конфликт с canonicalВерсия исчезает из выдачиКаждая версия канонична сама на себя
Разные языки на одном URLGoogle не связывает версииОдин язык = один адрес
Код ua вместо ukВерсия без разметкиЗаменить код в шаблоне
Ведёт на noindex, 404, редиректПара распадаетсяПроверять версии перед выводом
Перевода нет, hreflang естьСсылка на несуществующееТолько реально переведённые страницы
Маркетолог сравнивает языковые версии страницы сайта на двух мониторах в офисе

Как проверить, что hreflang работает

  1. Посмотрите код страницы или sitemap и убедитесь, что набор версий одинаков на каждой из них.
  2. Прогоните сайт краулером (Screaming Frog, Sitebulb, Serpstat Audit): они показывают отсутствующие обратные ссылки, невалидные коды и hreflang на неканонические адреса одним отчётом.
  3. В Google Search Console отдельного отчёта hreflang давно нет, но «Проверка URL» покажет, какую версию Google считает канонической и индексируется ли страница. Если каноническая не та, что вы ожидали, ищите конфликт с canonical.
  4. Наберите запрос в Google через VPN или с параметрами &gl=gb&hl=en и посмотрите, какая версия в выдаче. Это самый честный тест.

Официальные требования и примеры для всех трёх способов собраны в документации Google о локализованных версиях. Если валидатор и документация расходятся, прав Google.

Многоязычный сайт для Украины: uk, ru, en

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

  • Украинскую версию делайте основной без префикса или с /ua/, но последовательно по всему сайту. Смешанная структура, где часть страниц с префиксом, а часть без, разрушает разметку.
  • Русскую версию помечайте ru без региона. ru-UA оправдан только тогда, когда есть ещё ru-версия для другой страны.
  • Английская версия должна быть переведена по-настоящему, с локализованными ценами и контактами. Автоперевод с половиной украинских строк Google видит, и такая версия скорее вредит. Если своего ресурса нет, англоязычные тексты проще заказать сразу, чем переделывать потом.
  • x-default отдавайте на английскую, если рассчитываете на иностранцев, или на украинскую, если сайт для внутреннего рынка.
  • Непереведённые страницы исключайте из набора hreflang вместо того, чтобы ставить ссылку на украинскую под видом английской.

С чего начать

  1. Выписать все языковые версии и убедиться, что каждая живёт на собственном URL с кодом 200 и canonical на себя.
  2. Выбрать один способ разметки: link в head для небольших сайтов, sitemap для больших каталогов.
  3. Сгенерировать наборы из одной базы, чтобы взаимность была гарантирована, а не «по памяти».
  4. Добавить x-default и проверить коды: uk, а не ua.
  5. Прогнать краулером, исправить ошибки, через три-четыре недели проверить выдачу по странам.

Hreflang не добавляет позиций, он убирает потери. Когда правильная версия показывается правильному пользователю, растёт CTR и исчезают отказы «не тот язык». Для сайта с двумя-тремя языками это один-два дня работы разработчика и полдня на проверку, и эта инвестиция окупается стабильно.

Другие статьи

Другие услуги

Связаться с нами
Мессенджеры