Медиана

Языковые версии сайта: как связать и не сломать

Разметка hreflang сообщает поиску, какая версия страницы кому предназначена. Правила взаимности, частые ошибки кодов и границы метода.

Обновлено 29.09.2026 · 6 мин чтения

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

Коротко

  • Hreflang не переключает язык и не влияет на позиции — он подсказывает, какую из версий показать конкретному пользователю.
  • Разметка обязана быть взаимной: если A ссылается на B, то B обязан ссылаться на A, иначе связь игнорируется целиком.
  • Каждая страница указывает и саму себя — пропуск самоссылки ломает набор так же надёжно, как отсутствие обратной связи.
  • Самая частая ошибка — коды: язык и страна путаются местами, а несуществующие сочетания вроде en-uk отбрасываются молча.
  • Canonical каждой версии указывает на себя; попытка свести версии к одному каноническому адресу отменяет весь смысл разметки.

Что именно решает разметка

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

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

Второй эффект менее очевиден и более ценен: разметка защищает версии друг от друга. Три страницы с одинаковой структурой и переведённым текстом выглядят похожими, и без явного указания система может счесть их вариантами одного документа. Как система обычно поступает с такими наборами, разобрано в материале о дублирующемся содержании; hreflang снимает часть этих рисков, объясняя, что различие намеренное.

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

Как выглядит корректный набор

Разметка ставится в блоке head, по одной строке на каждую версию, включая текущую.

<link rel="alternate" hreflang="en" href="https://example.com/en/page/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/seite/" />
<link rel="alternate" hreflang="es-es" href="https://example.com/es/pagina/" />
<link rel="alternate" hreflang="es-mx" href="https://example.com/mx/pagina/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/" />

Три правила, нарушение любого из которых обесценивает весь набор.

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

Самоссылка. Каждая страница перечисляет и саму себя. Без этого набор считается неполным.

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

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

Три места размещения

СпособКогда применяютСлабое место
Блок head в HTMLОбычные страницы, большинство сайтовРастёт вес страницы при десятках версий
Заголовки HTTPФайлы без HTML — документы, изображенияТребует настройки на стороне сервера
XML-карта сайтаМного версий, сложная структураОшибки не видны при просмотре страницы

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

Вариант с картой сайта удобен на больших проектах: связи описываются в одном файле, и правка не требует релиза шаблонов. Расплата — невидимость: открыв страницу, разметку не увидишь, и ошибка живёт до ближайшего аудита.

Коды, на которых чаще всего ломается

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

en-uk не существует. Код страны для Великобритании — gb, а uk — это код языка (украинский). Запись выглядит логичной и отбрасывается молча.

Только страна без языка недопустима. Значение de-at корректно, at в одиночку — нет.

Регистр не имеет значения, порядок имеет. Сначала язык, потом страна. Перестановка делает значение невалидным.

Код страны — не то же самое, что аудитория. Значение es-mx означает «испанский для конкретной страны», а не «для всех, кто говорит по-испански в Латинской Америке». Если версия одна на регион, точнее указать только язык.

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

Симптом → причина → что делать

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

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

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

Две страны с одним языком конкурируют между собой в выдаче. Тексты почти идентичны, различий мало, и системе не за что зацепиться. Разметка тут помогает частично; остальное решается реальными различиями в содержании — ценами, условиями, местными деталями. Если различий нет, честнее объединить версии в одну.

Порядок внедрения

  1. Собрать карту соответствий. Таблица «страница — её версии на всех языках». Это самая трудоёмкая часть, особенно когда переведено не всё: страница без перевода не должна попадать в набор вообще.
  2. Решить, что делать с непереведённым. Два варианта: не включать в разметку либо не публиковать до перевода. Худший вариант — указывать в наборе адрес, который отдаёт содержание на другом языке.
  3. Выбрать одно место размещения. Код страниц либо карта сайта, но не оба сразу.
  4. Проверить взаимность автоматически. Обход краулером с отчётом по hreflang. Ручная проверка на нескольких страницах пропустит именно те типы, где обычно и ломается.
  5. Настроить отслеживание после релиза. Отчёты панели вебмастера показывают ошибки разметки отдельным блоком; проверять их имеет смысл вместе с остальными данными панели поиска.

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

Границы

Это подсказка, а не команда. Система вправе показать другую версию, если сочтёт её более подходящей. Гарантий разметка не даёт.

Поддержка неодинакова. Не все поисковые системы используют этот атрибут; часть определяет региональную принадлежность собственными настройками в панели вебмастера. Полагаться на одну разметку при работе с несколькими системами не стоит.

Разметка не спасает плохой перевод. Машинный перевод без редактуры остаётся слабым содержанием, и корректные связи между версиями этого не меняют.

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

Не помогает при частичном переводе. Сайт, где переведена десятая часть страниц, разметкой не спасается: набор получается рваным, и большинство страниц остаётся вне его. Здесь сначала решают, какой объём переводится целиком, и только потом связывают.

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

Спорное место

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

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

Второе сомнение — про распределение усилий. Работа с языковыми версиями почти всегда начинается с технической части, потому что она конечна и понятна. Реальная же причина, по которой версия не получает трафик, обычно лежит в содержании: перевод сделан с исходного текста, написанного под другой рынок, и отвечает на вопросы, которых там не задают. Никакая разметка это не компенсирует.

Частые вопросы

Влияет ли hreflang на позиции?

Прямо — нет. Разметка не добавляет странице веса и не улучшает ранжирование. Её задача в другом: когда система уже решила показать ваш сайт, она выбирает из набора версий подходящую пользователю. Косвенный эффект бывает — правильная версия чаще получает переход и реже вызывает мгновенный возврат в выдачу.

Нужен ли hreflang, если версии на разных доменах?

Да, и на разных доменах он даже нужнее. Система не обязана догадываться, что два разных сайта — версии одного проекта. Разметка работает одинаково для поддоменов, подкаталогов и отдельных доменов, требование к взаимности не меняется.

Что писать в x-default?

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

Можно ли указывать только язык, без страны?

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

Как проверить, что разметка работает?

Обходом сайта краулером с проверкой взаимности и отчётами панели вебмастера, где такие ошибки выводятся отдельно. Ручная проверка нескольких страниц ничего не гарантирует: ошибки обычно возникают на отдельных типах страниц — пагинации, фильтрах, карточках без перевода.

Источники

  1. Список кодов языков ISO 639-1 — Wikipedia
  2. Локализованные версии страниц — Google
Артём Строев
Пишу про измеримый маркетинг и видимость в ИИ-поиске. Публикуюсь под псевдонимом — почему так.