Перейти к основному содержимому
SiteScan.top

hreflang: тег, который ломается тихо и остаётся сломанным

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

SEO · Опубликовано: 2 сентября 2026 г. · 3 мин чтения · Ольга Мирошник

У многоязычного сайта есть характерный способ ломаться: на всех языках всё выглядит правильно, а в каждой стране ранжируется не та версия. Причина почти всегда одна — hreflang: тег, который никто не видит, никто не тестирует и все копируют из шаблона.

Зачем он нужен

hreflang не решает, какая страница будет ранжироваться. Он сообщает поисковику, что несколько страниц — это один контент на разных языках, чтобы движок подставил версию, подходящую пользователю. Сделано верно — немецкий посетитель попадает на немецкую страницу, а не на английскую. Сделано неверно — поисковик возвращается к догадкам.

Выглядит он непримечательно:

<link rel="alternate" hreflang="en" href="https://site.com/page/">
<link rel="alternate" hreflang="ru" href="https://site.com/ru/page/">
<link rel="alternate" hreflang="x-default" href="https://site.com/page/">

Правило, на котором спотыкаются все

Аннотации должны быть взаимными. Если английская страница указывает на русскую, русская обязана указывать обратно на английскую — и обе должны указывать на себя. Односторонняя аннотация игнорируется целиком, поэтому сайт может быть полон правильных на вид тегов, которые не делают ничего.

По этой же причине hreflang ломается в ходе обычной работы. Кто-то добавил четвёртый язык и обновил три шаблона вместо четырёх. Кто-то удалил страницу, а бывшие «братья» продолжают на неё ссылаться. Ошибок нет, внешне ничего не изменилось, а набор аннотаций молча перестал быть валидным.

Три ошибки по частоте

Ссылки на редиректы и 404. Цель должна быть конечным адресом с ответом 200. Ссылка на адрес с редиректом расходует аннотацию впустую.

Неверные коды. Язык — ISO 639-1, необязательный регион — ISO 3166-1 Alpha-2, и порядок «язык-регион»: en-GB, а не gb-en. en-UK кодом страны не является. Просто de покрывает всех говорящих по-немецки; de-AT нужен, только если контент действительно отличается.

Нет x-default. Без него у поисковика нет инструкции для посетителей, которые не подходят ни под один ваш язык. x-default должен указывать на выбор языка или на самую общую версию.

Проверка без открывания каждой страницы

Проверка механическая, а значит, ручной быть не должна:

для каждой страницы:
  собрать её альтернативы
  для каждой альтернативы:
    отвечает ли она 200?
    ссылается ли обратно на эту страницу?
    корректен ли код?
    ровно один ли x-default в наборе?

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

Ещё одна сверка

Атрибут lang у <html> должен совпадать с hreflang этой страницы, а canonical каждой языковой версии — указывать на себя, а не на английский оригинал. Эти две ошибки вместе дают классический симптом: английская страница ранжируется во всех рынках, а переводы не видны нигде.

Читайте также

Проверьте, что из этого есть на вашем сайте

Бесплатное сканирование покажет битые ссылки, ошибки JS и проблемы производительности за минуту.