Атрибут hreflang часто ставят как формальность и получают от этого ноль пользы: работает он только при полной взаимности. Разбираем устройство связей и типичные поломки.
Коротко
- Атрибут помогает показать нужную языковую версию.
- Ссылки должны быть взаимными между всеми версиями.
- Каждая версия ссылается и сама на себя.
- Ошибка в одной версии ломает связь целиком.
Зачем он нужен
Сообщает, что страницы — версии друг друга
Один материал на разных языках.
Помогает показать нужную версию
В зависимости от языка и региона.
Снижает конкуренцию между версиями
Они перестают выглядеть дублями.
Атрибут не переводит страницу и не заставляет показывать её именно в этой стране. Он сообщает о существовании альтернативных версий — решение о том, какую показать, остаётся за поиском. Ожидание «поставим и трафик пойдёт из нужной страны» не оправдывается.
Где размещают
| Способ | Когда удобнее |
|---|---|
| В служебной части страницы | Обычные сайты с небольшим числом версий |
| В заголовках ответа сервера | Для файлов, где нет разметки |
| В карте сайта | Много страниц и много версий |
Третий способ выигрывает на больших сайтах. Он не требует правок в коде каждой страницы и позволяет менять связи централизованно — но требует, чтобы карта сайта была корректной и актуальной. Про карту — в статье про XML-карту сайта.
Главные правила
Как должно быть
- Каждая версия ссылается на все остальные
- И на саму себя тоже
- Адреса указаны полностью
- Код языка корректен
- Страницы действительно соответствуют друг другу
Как ломается
- Связь односторонняя
- Версия не ссылается на себя
- Указаны относительные адреса
- Ошибка в коде языка или региона
- Страницы о разном
Первая строка справа — причина большинства неработающих настроек. Если русская версия ссылается на английскую, а английская на русскую не ссылается, связь не подтверждена и не учитывается. Взаимность обязательна для каждой пары.
Частые ошибки
| Ошибка | Последствие |
|---|---|
| Разные наборы версий на разных страницах | Часть связей не подтверждается |
| Ссылка на страницу с переадресацией | Связь теряется |
| Ссылка на закрытую от индексирования версию | Она не может быть альтернативой |
| Канонический адрес на другую языковую версию | Противоречие сигналов |
| Автоматическая переадресация по стране | Робот видит не то, что люди |
Последняя строка — частая архитектурная ошибка мультиязычных сайтов. Принудительная переадресация посетителя на версию по его стране мешает и людям, которым нужна другая версия, и роботу, который приходит из определённого места. Разумнее предлагать переключение, а не навязывать его.
Как проверить
Откройте код каждой версии
Проверьте полный набор ссылок.
Убедитесь во взаимности
Каждая на каждую, включая себя.
Проверьте коды ответа адресов
Должно быть 200 без переадресаций.
Сверьте с каноническими адресами
Не должны противоречить.
Посмотрите отчёты панелей
Там видно ошибки связей.
Проверять нужно по образцу каждого типа страниц, а не только главную. Связи обычно формирует шаблон, и ошибка в шаблоне каталога не видна на главной странице. Про семантику для разных языков — в статье про мультиязычную семантику.
Частые вопросы
Что делает атрибут hreflang?
Сообщает, что страницы являются версиями друг друга, и помогает показать нужную версию в зависимости от языка и региона. Он не переводит страницу и не гарантирует показ в конкретной стране.
Почему hreflang не работает?
Чаще всего из-за односторонних связей: если одна версия ссылается на другую, а обратной ссылки нет, связь не подтверждена. Взаимность обязательна для каждой пары.
Где размещать атрибут?
В служебной части страницы, в заголовках ответа сервера или в карте сайта. Последний вариант удобнее на больших сайтах: не нужно править код каждой страницы.
Нужно ли переадресовывать посетителей по стране?
Нет. Принудительная переадресация мешает и людям, которым нужна другая версия, и роботу, который приходит из определённого места. Лучше предлагать переключение.
Читайте также
Продвинем сайт в поиске
Соберём семантику, доведём структуру и текст до уровня топа и будем вести проект до заявок.
Обсудить SEO-продвижение