Как настроить hreflang для мультиязычного сайта: пошаговое руководство без дублей и ошибок

Зачем мультиязычному сайту нужен hreflang
Мультиязычный сайт помогает бизнесу работать с клиентами из разных стран и регионов. Однако наличие переводов само по себе не гарантирует, что поисковая система покажет пользователю нужную версию страницы. Посетитель из Казахстана может увидеть страницу на русском языке, а пользователь из Германии — англоязычную версию вместо немецкой. В некоторых случаях поисковик выбирает не ту страницу, объединяет похожие URL в одну группу или воспринимает переводы как дубли.
Для решения этой задачи применяется атрибут hreflang. Он сообщает поисковым системам, для какой языковой и региональной аудитории предназначена конкретная версия страницы.
Например, у интернет-магазина могут быть такие URL:
- example.com/ru/ для русскоязычных пользователей;
- example.com/en/ для англоязычных пользователей;
- example.com/de/ для немецкоязычных пользователей;
- example.com/kk/ для пользователей, предпочитающих казахский язык.
С помощью hreflang можно связать эти страницы между собой и объяснить поисковику, что они являются эквивалентными версиями одного материала для разных аудиторий.
Важно понимать: hreflang не является прямым способом поднять страницу в поисковой выдаче. Он не заменяет качественный перевод, техническую оптимизацию, контент и региональное продвижение. Его задача — помочь поисковой системе выбрать наиболее подходящую языковую версию.
Что такое hreflang простыми словами
Hreflang — это специальная разметка, которая связывает альтернативные версии страниц. В ней указывается:
- адрес альтернативной страницы;
- язык страницы;
- при необходимости регион, для которого она предназначена.
Язык указывается кодом, например:
- ru — русский;
- en — английский;
- de — немецкий;
- fr — французский;
- kk — казахский;
- uk — украинский.
Регион добавляется через дефис. Например, en-US означает английский язык для пользователей из США, а en-GB — английский язык для Великобритании.
Языковой код и код региона нельзя указывать произвольно. Если сайт рассчитан на пользователей из конкретной страны, региональная часть должна соответствовать стандартному обозначению страны. При этом значение en означает английский язык без привязки к определенному государству.
Когда hreflang действительно нужен
Настройка hreflang особенно полезна в нескольких ситуациях.
У сайта есть полноценные языковые версии
Если страницы переведены на разные языки и доступны по отдельным URL, поисковику нужно показать связь между ними. Это относится к корпоративным сайтам, интернет-магазинам, сервисам, образовательным платформам и туристическим проектам.
Один язык используется в разных странах
Иногда сайт имеет несколько версий на одном языке, но содержание отличается для разных рынков. Например, англоязычная страница для пользователей из США может содержать одни условия доставки, а версия для Великобритании — другие.
В такой ситуации можно использовать комбинации:
- en-US;
- en-GB;
- en-CA.
Если отдельные региональные версии не нужны, достаточно указать общий код языка en.
В разных странах отличаются цены, валюта и условия заказа
Для интернет-магазинов региональная настройка особенно важна. Пользователь должен попасть на страницу с корректной валютой, способом доставки, налогами и контактами местного офиса.
Есть риск конкуренции между похожими страницами
Переводы одного материала могут быть похожи по структуре и содержанию. Это не всегда означает технический дубль, поскольку разные языки ориентированы на разные аудитории. Но без правильной связки поисковая система может неверно интерпретировать назначение страниц.
Когда hreflang не нужен
Не стоит добавлять hreflang автоматически на любой сайт.
- Если у проекта только одна языковая версия.
- Если разные страницы отличаются исключительно параметрами URL и не предназначены для разных регионов.
- Если перевод выполнен частично и пользователь видит смесь нескольких языков.
- Если языковые версии фактически не имеют уникального содержания и не обслуживаются.
- Если региональные страницы созданы только ради увеличения числа URL и не несут пользы посетителю.
Hreflang не исправит плохую архитектуру сайта. Если страницы не открываются, закрыты от индексации или содержат неработающие ссылки, сначала нужно устранить эти проблемы.
Как спроектировать URL для языковых версий
Перед настройкой hreflang необходимо выбрать понятную структуру адресов. Чаще всего используются три варианта.
Поддомены
Пример:
- ru.example.com;
- en.example.com;
- de.example.com.
Поддомены позволяют визуально отделить языковые версии. Однако поисковая система может воспринимать их как самостоятельные части проекта, поэтому потребуется внимательная настройка аналитики, перелинковки и технических параметров.
Подкаталоги
Пример:
- example.com/ru/;
- example.com/en/;
- example.com/de/.
Подкаталоги обычно проще в обслуживании. Все версии находятся внутри одного домена, а структура понятна пользователям и поисковым роботам.
Отдельные домены
Примером может быть использование разных доменных зон для разных стран. Такой вариант позволяет строить самостоятельные региональные проекты, но требует больше ресурсов. Нужно следить за настройками доменов, сертификатов, хостинга, аналитики и ссылочного профиля.
Для большинства небольших и средних компаний практичным решением становятся подкаталоги. Но окончательный выбор зависит от бизнес-модели, географии, CMS и требований к локальному продвижению.
Основные способы настройки hreflang
Существует три распространенных способа передать поисковой системе информацию о языковых версиях:
- HTML-теги в секции head.
- HTTP-заголовки.
- Файл sitemap.xml.
Не обязательно использовать все способы одновременно. В большинстве проектов выбирают один основной метод, чтобы снизить риск расхождений.
Настройка hreflang через HTML
Для HTML-страниц альтернативные версии указываются с помощью элементов link. Они размещаются в секции head каждой страницы.
Условный пример для русской страницы:
<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/page/">
На английской и немецкой версиях должен находиться такой же набор ссылок. Отличаться будет только текущая страница и, возможно, список доступных языков.
Ключевой принцип — взаимность. Если русская версия указывает на английскую, английская должна указывать обратно на русскую. Односторонняя ссылка часто становится причиной ошибок при проверке hreflang.
Что означает x-default
Значение x-default используется для страницы, которая предназначена для пользователей без подходящей языковой или региональной версии. Это может быть:
- страница выбора языка;
- нейтральная международная версия;
- главная страница с автоматическим выбором региона;
- англоязычная версия, используемая как универсальная.
Использование x-default не обязательно, но оно может помочь определить запасной вариант. Если на сайте есть отдельная страница выбора языка, логично указать ее в качестве x-default.
Настройка hreflang через HTTP-заголовки
HTTP-заголовки применяются, когда страница не является обычным HTML-документом. Такой способ актуален для PDF-файлов, документов и других ресурсов, у которых нельзя разместить HTML-разметку в секции head.
Условный вариант заголовка может выглядеть так:
Link: <https://example.com/ru/document.pdf>; rel="alternate"; hreflang="ru", <https://example.com/en/document.pdf>; rel="alternate"; hreflang="en"
На практике заголовки настраиваются на уровне веб-сервера, CDN или серверного приложения. Важно проверить, что они действительно передаются в ответе, а не только прописаны в конфигурации.
Для обычных страниц этот метод используется реже, поскольку HTML-разметку проще поддерживать через CMS или шаблоны.
Настройка hreflang через sitemap.xml
Для крупных сайтов с большим количеством языковых версий удобным вариантом может стать XML-карта сайта. В ней для каждой страницы формируется группа альтернативных URL.
Условная структура выглядит следующим образом:
<url>
<loc>https://example.com/ru/page/</loc>
<xhtml:link rel="alternate" hreflang="ru" href="https://example.com/ru/page/"/>
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/page/"/>
</url>
Для работы такой схемы в sitemap должен быть указан соответствующий XML-пространство имен. Конкретная реализация зависит от CMS и генератора карты сайта.
Преимущество sitemap-подхода заключается в том, что не нужно добавлять большое количество тегов в каждую HTML-страницу. Это особенно удобно для интернет-магазинов, каталогов и новостных проектов.
Недостаток — сложность автоматической генерации и риск появления неполных групп. Если в карте указана только часть языковых версий, поисковая система получит противоречивые сигналы.
Правильная логика разметки
Каждая языковая версия должна ссылаться на все доступные альтернативы одной и той же страницы. Рассмотрим условную группу:
- example.com/ru/services/;
- example.com/en/services/;
- example.com/de/services/.
На каждой из трех страниц должны быть указаны все три URL. Нельзя на русской странице добавить ссылки на английскую и немецкую версии, а на немецкой оставить только ссылку на русскую.
Также важно, чтобы текущая страница ссылалась сама на себя. Это называют self-referencing hreflang. Такая ссылка помогает поисковику понять, что страница входит в единую группу альтернатив.
Пример набора для русской страницы
- hreflang ru ведет на русскую страницу;
- hreflang en ведет на английскую страницу;
- hreflang de ведет на немецкую страницу;
- hreflang x-default ведет на универсальную страницу или выбор языка.
Как сочетать hreflang с canonical
Hreflang и canonical решают разные задачи.
- Canonical указывает предпочтительный URL среди одинаковых или очень похожих страниц.
- Hreflang связывает языковые и региональные версии для разных аудиторий.
На каждой языковой странице обычно устанавливают self-referencing canonical, то есть canonical указывает на текущий URL. Например, русская версия канонизируется на себя, английская — на себя, немецкая — на себя.
Не следует без причины указывать canonical всех переводов на одну языковую страницу. Если на английской странице canonical ведет на русскую, поисковик может воспринять английскую версию как второстепенную и проигнорировать ее для индексации.
Важное правило: hreflang и canonical не должны противоречить друг другу. Если страница включена в группу языковых альтернатив, она должна быть доступна для индексации и не должна канонизироваться на другую языковую версию без обоснованной причины.
Связь hreflang с robots.txt и метатегом noindex
Страницы, на которые ссылается hreflang, должны быть доступны поисковым роботам. Проверьте, чтобы они:
- не были запрещены в robots.txt;
- не содержали meta name="robots" content="noindex";
- отдавали успешный ответ сервера;
- не перенаправляли на другую языковую версию;
- были доступны без обязательного входа в аккаунт;
- не блокировались защитой от роботов.
Если URL указан в hreflang, но робот не может его проверить, разметка теряет смысл. Особенно часто такая проблема возникает после запуска новой языковой версии, когда разработчики временно закрывают раздел от индексации, а затем забывают убрать запрет.
Автоматический выбор языка и SEO
Некоторые сайты определяют язык пользователя по IP-адресу, настройкам браузера или геолокации. После этого сервер автоматически перенаправляет посетителя на нужную версию.
Полностью автоматические редиректы могут создавать проблемы:
- поисковый робот не всегда может проверить все версии;
- пользователь не может открыть нужную страницу напрямую;
- ссылки из рекламы могут вести не на тот язык;
- один и тот же URL может показывать разное содержимое разным людям;
- возникают циклические перенаправления.
Лучше использовать понятные постоянные URL и позволять пользователю самостоятельно переключать язык. Геолокацию можно применять как подсказку, но не как единственный способ навигации.
Переключатель языка должен вести на эквивалентную страницу, а не всегда на главную. Если посетитель читает карточку товара на русском языке, после смены языка он должен попасть на карточку этого же товара, если перевод существует.
Как организовать переключатель языков
Переключатель языка — это не только элемент интерфейса, но и важная часть структуры сайта.
Рекомендуется:
- размещать его в заметной, но ненавязчивой области;
- использовать названия языков, понятные пользователям;
- сохранять текущий раздел или товар при смене языка;
- не показывать ссылки на отсутствующие переводы;
- сохранять выбранный язык во время навигации;
- не прятать все языковые версии за одним недоступным для роботов скриптом.
Флаги стран не всегда подходят для обозначения языка. Один язык может использоваться в нескольких государствах, а одна страна может быть многоязычной. Текстовые названия обычно понятнее и точнее.
Региональные версии и код x-default
Если сайт работает на нескольких рынках, важно не смешивать язык и регион.
Например, версии могут быть такими:
- en-US для США;
- en-GB для Великобритании;
- en-CA для Канады.
Если существует только одна английская версия без региональных отличий, лучше использовать en. Не нужно искусственно создавать en-US и en-GB, если содержимое, цены, доставка и контакты полностью одинаковы.
Для пользователей, язык или регион которых не совпадает с доступными вариантами, можно указать x-default. Это особенно полезно для международного сайта с нейтральной страницей выбора рынка.
Hreflang и динамические параметры
Ошибки часто возникают, когда языковые версии дополнительно используют параметры:
- utm_source;
- utm_campaign;
- идентификаторы сессии;
- параметры сортировки;
- параметры фильтрации;
- параметры персонализации.
В hreflang нужно указывать чистые канонические URL без рекламных меток и технических параметров. В противном случае в разметке появятся лиш