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