hreflang: как поисковик понимает языковые версии сайта
hreflang — это разметка, которая говорит Google, что у страницы есть версии на других языках, и подсказывает, какую из них показать конкретному пользователю.
hreflang — это атрибут в коде страницы, в HTTP-заголовке или в sitemap. Он сообщает поисковику, что у страницы есть версии на других языках или для других стран, и указывает, какую версию показывать какому пользователю. Без него Google сам решает, кому выдать русскую страницу, а кому английскую, и на двуязычном сайте может решить неверно.
Как работает hreflang
Каждая языковая версия страницы перечисляет все свои версии, включая саму себя. Разметка в блоке <head> выглядит так:
<link rel="alternate" hreflang="ru" href="https://example.ae/ru/uslugi/" />
<link rel="alternate" hreflang="en" href="https://example.ae/services/" />
<link rel="alternate" hreflang="ar" href="https://example.ae/ar/services/" />
<link rel="alternate" hreflang="x-default" href="https://example.ae/services/" />
Этот же набор строк стоит на всех трёх страницах. Правила такие:
- Взаимность. Если русская страница ссылается на английскую, английская должна ссылаться на русскую. В документации Google сказано, что аннотация без обратной ссылки может не учитываться.
- Коды языков по ISO 639-1:
ru,en,ar. Регион добавляется по желанию через дефис, по ISO 3166-1 alpha-2:ru-AE,en-SA,ar-QA. - x-default — запасная версия для тех, чей язык не подошёл ни под одну из перечисленных. Обычно это английская страница или страница выбора языка.
- Только канонические адреса. В href ставится рабочая страница с кодом ответа 200, без редиректа и без noindex.
Google считает hreflang подсказкой. Если разметка противоречит другим сигналам, поисковик может её проигнорировать. Яндекс тоже понимает hreflang, это пригодится, если часть русскоязычных клиентов ищет через него.
Три способа разметки
| Способ | Где живёт | Когда удобен |
|---|---|---|
Тег <link> в <head> |
В HTML каждой страницы | Обычный сайт на CMS или генераторе, страниц до нескольких сотен |
HTTP-заголовок Link |
В ответе сервера | Файлы без HTML: PDF-презентации, прайсы |
xhtml:link в sitemap.xml |
В карте сайта | Тысячи страниц или шаблон, который трудно править |
Выбирайте один способ. Если смешать два и в них окажутся разные данные, поисковик получит противоречие. Для PDF вариант с заголовком единственный: у файла нет <head>.
Условный пример
Условный пример: клиника в Дубае ведёт сайт на трёх языках. Страница процедуры есть на английском (/treatments/botox/), русском (/ru/procedury/botoks/) и арабском (/ar/treatments/botox/). Русскоязычная пациентка ищет в Google на русском, а поисковик показывает ей английскую страницу: на английской больше внешних ссылок, а связи между версиями он не видит. Пациентка уходит к конкуренту, у которого текст на её языке.
Клиника ставит на все три страницы одинаковый блок из четырёх строк (ru, en, ar, x-default). У каждой версии canonical указывает на неё саму. После переобхода Google начинает выдавать русскую страницу на русские запросы. Видимость сайта в целом от этого не растёт: каждый язык просто получает свою выдачу.
Где применяется
- Сайты бизнеса в ОАЭ на двух-трёх языках. Английский для всех, русский для русскоязычных клиентов, арабский для местной аудитории. Среди сайтов ресторанов и заведений Дубая таких немного: из 409 полностью разобранных сайтов русскую версию имеют 50 (12,2 %), арабскую 82 (20,0 %), все три языка 38 (9,3 %) (исследование 537 сайтов в журнале Savage Media). Как устроить трёхъязычный сайт с арабским справа налево, разобрано в статье про EN/AR/RU и RTL в журнале Savage Media.
- Один язык, разные страны. Если у компании есть отдельные английские страницы для Дубая и Дохи с разными ценами и адресами, их связывают через
en-AEиen-QA. - Большие наборы статей. На сайте Lucent Legal 213 гайдов на русском и 213 на английском, то есть 213 пар страниц. При таком объёме разметку генерирует шаблон: вручную её не поддержать.
Если у вас одна языковая версия, hreflang не нужен.
Чем hreflang отличается от соседних терминов
| Термин | Что сообщает | Чем отличается от hreflang |
|---|---|---|
rel="canonical" |
Какой адрес главный среди дублей на одном языке | hreflang связывает разные языки, canonical склеивает копии одного языка |
<html lang="ru"> |
На каком языке написана эта страница | Описывает только текущую страницу и не ссылается на другие версии |
| Переключатель языка | Даёт человеку выбрать язык | Нужен людям, роботу сам по себе ничего не объясняет |
| Редирект по IP или браузеру | Принудительно отправляет на версию | Решает за человека и может скрыть версии от робота |
Чаще всего hreflang конфликтует с canonical. Если русская страница объявляет каноническим английский адрес, вы фактически говорите Google, что русской версии нет. hreflang тогда не сработает.
Что не стоит делать
- Писать
hreflang="ae", имея в виду ОАЭ.ae— код языка (авестийского), а не страны. Правильноar-AEилиen-AE, либо простоarиen. - Писать
en-UK. Код ВеликобританииGB, значит, правильноen-GB. - Ставить canonical со всех языков на английскую версию. У каждой версии canonical указывает на неё саму.
- Ссылаться в hreflang на адреса с редиректом, 404 или noindex. Например, на
/ru/uslugiбез слэша, когда сервер отправляет на/ru/uslugi/. - Связывать любую страницу с главной другого языка. Если у статьи нет перевода, hreflang на ней не ставят вообще. Ссылка на чужую главную вводит робота в заблуждение.
- Делать разный набор языков на разных версиях. На русской странице три языка, на арабской два: взаимность нарушена.
- Дублировать текст под видом перевода. Если «русская» версия — английский текст с переведённым меню, Google может счесть страницы дублями. О том, что переписывать, а что переводить, есть отдельный разбор.
Подробнее о типичных поломках на сайтах с русским, английским и арабским — в статье «Ошибки hreflang на сайтах RU/EN/AR».
Как проверить
- Исходный код. Откройте страницу, нажмите «Просмотр кода» и найдите
hreflang. Сверьте: все ли языки на месте, есть ли ссылка на саму страницу, совпадают ли адреса буква в букву, включая слэш в конце. - Обратные ссылки. Перейдите по каждому адресу из блока и проверьте, что там стоит такой же набор строк.
- Код ответа. Команда
curl -I https://адресдолжна вернуть 200 без перенаправления. - Search Console. Инструмент проверки URL показывает, какой canonical объявили вы и какой выбрал Google. Если для русской страницы Google выбрал английскую, разметка или контент требуют правки. Как устроен этот инструмент, описано в статье Google Search Console.
- Sitemap. Если разметка лежит в карте сайта, проверьте, что файл открывается, указан в robots.txt и отправлен в Search Console.
- Выдача. Поищите название своей услуги в Google на русском и на английском. Сравните, какая версия появляется в каждом случае.
Если сайт собирается заново, спросите подрядчика по разработке сайта до старта: генерирует ли шаблон hreflang для каждой новой страницы и ставит ли его только на страницы, у которых есть перевод.
Связанные термины
- Ошибки hreflang на сайтах RU/EN/AR: разбор поломок на живых конфигурациях.
- Версия на RU и EN: что переводить, а что переписывать: контент, который hreflang связывает.
- Google Search Console: где смотреть, какую версию выбрал Google.
- GEO: как нейросети читают сайт, в том числе многоязычный.
Короткий чек-лист
- У каждой языковой версии есть блок hreflang со всеми языками и ссылкой на саму себя.
- Коды языков:
ru,en,ar; регион только по ISO 3166-1, напримерAE,QA,SA. - Есть
x-default. - Набор языков одинаковый на всех версиях, ссылки взаимные.
- Все адреса в href отдают 200, без редиректов и noindex.
- Canonical каждой версии указывает на неё саму.
- Страницы без перевода не размечены hreflang.
- Разметка задана одним способом: в
<head>, в заголовке или в sitemap. - Автоматического редиректа по IP нет, переключатель языка виден.
- Раз в месяц выборочно проверяйте в Search Console, какой canonical выбрал Google для русских и арабских страниц.
Вопросы и ответы
Нужен ли hreflang, если у сайта только русская и английская версии?
Да. Двух языков хватает, чтобы Google путал версии и показывал англоязычному клиенту русскую страницу. Разметка связывает пары страниц и снимает эту путаницу.
Можно ли вместо hreflang просто перенаправлять посетителя по IP или языку браузера?
Лучше так не делать. Автоматический редирект мешает поисковому роботу увидеть все версии, а человеку не даёт выбрать язык самому. Поставьте hreflang и видимый переключатель языка.
Какой код ставить для арабской версии сайта в ОАЭ?
Для языка указывается 'ar'. Если версия сделана именно для ОАЭ, можно написать 'ar-AE'. Код 'ae' без языка ошибочный: это код авестийского языка, а не страны.
Гарантирует ли hreflang, что Google покажет нужную версию?
Нет. Google считает hreflang подсказкой и может выбрать иначе, если версии почти одинаковые или разметка противоречит canonical. Правильная разметка повышает шанс, что выбор будет верным.