Hreflang — мощный инструмент для мультиязычного SEO, но ошибки в разметке встречаются часто. Google может игнорировать некорректный hreflang или интерпретировать его неправильно. В этой статье разберём типичные ошибки и способы их исправления.
Ошибка 1: Отсутствие самоссылки
Каждая страница в наборе hreflang должна ссылать на саму себя. Многие забывают добавить link с hreflang текущего языка.
Неправильно
<!-- На странице /ru/page — нет ссылки на саму себя -->
<link rel="alternate" hreflang="en" href="https://example.com/en/page" />
<link rel="alternate" hreflang="de" href="https://example.com/de/page" />
Правильно
<link rel="alternate" hreflang="ru" href="https://example.com/ru/page" />
<link rel="alternate" hreflang="en" href="https://example.com/en/page" />
<link rel="alternate" hreflang="de" href="https://example.com/de/page" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/page" />
Почему это важно
Google использует самоссылку для верификации набора. Без неё разметка может быть проигнорирована.
Ошибка 2: Неполная взаимная ссылка
Все версии должны ссылать друг на друга. Если на /ru/page есть ссылка на /en/page, то на /en/page обязательно должна быть ссылка на /ru/page.
Типичный сценарий
Сайт имеет версии ru, en, de. На русской странице указаны все три. На английской — только en и x-default. На немецкой — только de. Набор неполный.
Решение
Создайте единый шаблон разметки и применяйте его ко всем страницам набора. Проверьте каждую версию через инструмент hreflang на reChecker.
<!-- Шаблон для КАЖДОЙ страницы в наборе -->
<link rel="alternate" hreflang="ru" href="https://example.com/ru/page" />
<link rel="alternate" hreflang="en" href="https://example.com/en/page" />
<link rel="alternate" hreflang="de" href="https://example.com/de/page" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/page" />
Ошибка 3: Неверные коды языков и регионов
Использование нестандартных кодов — частая причина игнорирования разметки.
Неправильные коды
| Ошибка | Правильно |
|---|---|
| ru-RU | ru (регион опционален для русского) |
| en-EU | Не существует (EU не код региона) |
| zh-CH | zh-CN (Китай) или zh-TW (Тайвань) |
| pt-BR, pt-PT | Правильно для бразильского и европейского португальского |
Справочник
- Язык: ISO 639-1 (две буквы)
- Регион: ISO 3166-1 Alpha 2 (две буквы)
- Формат:
языкилиязык-регион
<!-- Правильно -->
<link rel="alternate" hreflang="en-GB" href="https://example.com/uk/page" />
<link rel="alternate" hreflang="en-US" href="https://example.com/us/page" />
Ошибка 4: Отсутствие x-default
x-default указывает версию по умолчанию, когда язык пользователя не совпадает ни с одним вариантом. Без x-default Google сам выбирает версию — часто не оптимально.
Неправильно
<link rel="alternate" hreflang="ru" href="https://example.com/ru/page" />
<link rel="alternate" hreflang="en" href="https://example.com/en/page" />
<!-- Нет x-default -->
Правильно
<link rel="alternate" hreflang="ru" href="https://example.com/ru/page" />
<link rel="alternate" hreflang="en" href="https://example.com/en/page" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/page" />
Обычно x-default указывает на английскую или международную версию.
Ошибка 5: Относительные URL
Google рекомендует абсолютные URL. Относительные могут работать, но в некоторых случаях вызывают проблемы.
Неправильно
<link rel="alternate" hreflang="en" href="/en/page" />
Правильно
<link rel="alternate" hreflang="en" href="https://example.com/en/page" />
Особенно критично для сайтов с несколькими доменами (example.ru, example.de) — относительный путь неоднозначен.
Ошибка 6: Конфликт canonical и hreflang
Canonical не должен указывать на другую языковую версию. Каждая языковая версия — отдельная страница, canonical должен ссылать на саму себя.
Неправильно
<!-- На русской странице -->
<link rel="canonical" href="https://example.com/en/page" />
<link rel="alternate" hreflang="ru" href="https://example.com/ru/page" />
<link rel="alternate" hreflang="en" href="https://example.com/en/page" />
Русская страница канонизирована на английскую — Google может индексировать только английскую версию для всех регионов.
Правильно
<!-- На русской странице -->
<link rel="canonical" href="https://example.com/ru/page" />
<link rel="alternate" hreflang="ru" href="https://example.com/ru/page" />
<link rel="alternate" hreflang="en" href="https://example.com/en/page" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/page" />
Ошибка 7: Разные наборы на страницах одного языка
Все страницы в наборе должны ссылать на один и тот же набор версий. Если /ru/page1 ссылает на en и de, а /ru/page2 — только на en, это ошибка конфигурации.
Причина
Часто возникает при ручном добавлении hreflang или при разных шаблонах для разных типов страниц. Проверьте, что логика генерации едина.
Ошибка 8: Hreflang на несуществующих страницах
Ссылка указывает на URL, который возвращает 404 или редирект. Google не сможет использовать такой набор.
Проверка
Проверьте все URL из hreflang-разметки:
curl -I https://example.com/en/page
curl -I https://example.com/de/page
Убедитесь, что все возвращают 200 и контент доступен.
Ошибка 9: Дублирование hreflang в одном документе
Несколько блоков link с hreflang для одной страницы — неоднозначность. Оставьте один полный набор.
Неправильно
<link rel="alternate" hreflang="ru" href="https://example.com/ru/page" />
<link rel="alternate" hreflang="en" href="https://example.com/en/page" />
<!-- ... где-то ниже в документе ... -->
<link rel="alternate" hreflang="ru" href="https://example.com/ru/page" />
<link rel="alternate" hreflang="de" href="https://example.com/de/page" />
Правильно
Один блок со всеми версиями в head.
Ошибка 10: Hreflang и hreflang в sitemap одновременно с расхождениями
Если используете и HTML, и sitemap — данные должны совпадать. Расхождение может запутать робота.
Рекомендация: выберите один метод (предпочтительно HTML) и придерживайтесь его.
Чек-лист исправлений
| Ошибка | Действие |
|---|---|
| Нет самоссылки | Добавить link с hreflang текущего языка |
| Неполная взаимность | Проверить все страницы набора, добавить недостающие |
| Неверные коды | Использовать ISO 639-1 и ISO 3166-1 |
| Нет x-default | Добавить link с hreflang="x-default" |
| Относительные URL | Заменить на абсолютные |
| Canonical на другую версию | Canonical на саму себя |
| 404 на целевых URL | Исправить или удалить ссылки |
| Дублирование блоков | Оставить один набор |
Инструменты проверки
Инструмент hreflang на reChecker проверяет разметку на типичные ошибки и выдаёт отчёт с рекомендациями. Для комплексной проверки мультиязычного сайта используйте технический аудит.
Google Search Console в отчёте «Международная целевая аудитория» показывает проблемы с hreflang, если они влияют на индексацию.
План исправления ошибок
Шаг 1: Аудит
Проверьте все языковые версии ключевых страниц. Составьте список URL с ошибками. Выявите паттерны (одинаковая ошибка на всех страницах — проблема в шаблоне).
Шаг 2: Исправление шаблонов
Если ошибка системная (например, отсутствие самоссылки на всех страницах) — исправьте шаблон или логику генерации. Один фикс устранит все случаи.
Шаг 3: Ручные исправления
Для единичных ошибок (неверный URL на конкретной странице) — исправьте вручную или через CMS.
Шаг 4: Валидация
Повторная проверка через инструменты. Убедитесь, что ошибки устранены.
Шаг 5: Мониторинг
После исправлений Google перекрауливает страницы. Через 1–2 недели проверьте Search Console — статус международной целевой аудитории должен улучшиться.
Профилактика ошибок
Шаблоны и генерация
Используйте единый шаблон для генерации hreflang. Переменные для текущего языка, списка языков, базового URL. Тестирование на staging перед выкаткой.
Документация
Задокументируйте правила: какие коды используются, какой URL x-default, структура. Новые команды и разработчики смогут следовать стандартам.
Регулярные проверки
Включите проверку hreflang в ежемесячный или ежеквартальный аудит. Новые страницы, новые языки — источник новых ошибок.
Связанные материалы
Базовое руководство по настройке — в статье Hreflang: полное руководство. Стратегия мультиязычного продвижения — в руководстве по международному SEO.