Все посты
Обновлено 9999+ Знания

Все про атрибут hreflang в SEO: как указать языковые версии страниц

В статье рассмотрим, что такое hreflang, зачем он нужен и как настроить его на сайте без ошибок. Материал обновлен 15.06.26.

Краткое саммари

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

Указывайте все альтернативы, добавляйте ссылку страницы на саму себя, используйте корректные коды ISO и ставьте hreflang только на канонические URL.

Кому стоит прочитать эту статью:

  • SEO-специалистам, которые настраивают мультиязычный сайт или международное SEO;
  • разработчикам, которым нужно добавить hreflang в HTML, HTTP-заголовки или sitemap.xml;
  • владельцам сайтов с версиями для разных стран, языков, валют и региональных условий.

Что такое hreflang и зачем он нужен

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

Атрибут hreflang поддерживают Google и Яндекс. Но поисковики не рассматривают его как директиву. Если разметка противоречит canonical, robots.txt, noindex или страницы недоступны, поисковик может проигнорировать hreflang.

FAQ по разделу

Hreflang может повышать позиции?

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

Чем hreflang отличается от lang?

lang описывает язык содержимого для браузеров и вспомогательных технологий, а hreflang сообщает поисковикам об альтернативных версиях URL.

Нужно ли использовать hreflang, если на сайте только один язык?

Да, если один язык используется для разных регионов (например, en-us и en-gb).

Кому стоит указывать hreflang

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

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

Допустим, вы работаете на зарубежном рынке и вам нужны разные страницы для пользователей из США и Великобритании. Они будут почти идентичны, поэтому Google может посчитать их дублями и выбрать только одну для индексации.

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

На страницах под США вы укажете цены в долларах и используете слова из американского английского, а на страницах для Великобритании будут фунты стерлингов и британский английский.

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

Если язык страницы меняется в зависимости от IP-пользователя или на странице можно выбрать язык, тоже используют тег hreflang, но со значением “x-default”. Настройку разберем ниже.

FAQ по разделу

Нужен ли hreflang интернет-магазину?

Да, если на нем есть версии для разных стран, валют, языков, складов или условий доставки.

Нужен ли hreflang сайту только на русском?

Только отдельным региональным страницам с разным содержанием, например, для России, Казахстана и Беларуси.

Можно ли заменить hreflang редиректом по IP?

Лучше так не делать, потому что поисковик должен видеть и сканировать каждую языковую версию по отдельному URL.

Особенности тегов hreflang

Странице нужно добавить указание на себя

Строчка с hreflang не может быть одна. В Справке Яндекса указано, что в hreflang должны быть перечислены все версии страницы, включая текущую.

Если страница на русском продублирована на английском и украинском, на каждой из этих страниц должно быть три соответствующих элемента link с атрибутами локализации. То есть ссылка на себя и на две языковые альтернативы:

<link rel="alternate" hreflang="ru" href="https://ru.site.com/" />
<link rel="alternate" hreflang="en" href="https://en.site.com/" />
<link rel="alternate" hreflang="uk" href="https://uk.site.com/" />

Что означает каждая часть кода:

  • "alternate" — у этой страницы есть альтернативная версия;

  • hreflang = "uk" — альтернативная версия написана на украинском;

  • "https://uk.site.com/" — украинскую версию можно найти по этому URL.

Языковые коды указаны в стандарте ISO 639–1: ru — русский, de — немецкий, uk — украинский и так далее. Есть дополнительный список формата ISO 3166–1 alpha-2, когда нужно уточнить регион или страну: en-gb — английский контент для Великобритании, en-us — американский английский для США, de-es — контент на немецком для пользователей из Испании.

Регион уточняйте только после кода языка, а то может возникнуть путаница:

  • be — белорусский язык для любого региона;

  • fr-be — французский для жителей Бельгии.

В Google Search Central также написано:

«Каждая языковая версия должна указывать на себя, а также на все другие языковые версии».

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

Теги hreflang работают только парами

Если есть две одинаковых страницы сайта на разных языках, на каждой нужно указать ссылку на вторую страницу.

Допустим, у вас есть русская и украинская версия контента. На страницу на русском языке вы добавляете тег hreflang, где указываете, что есть украинская версия страницы. А на странице для Украины в теге hreflang указываете, что есть русская альтернатива.

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

Пример тега hreflang с указанием альтернативного варианта на украинском:

<link rel="alternate" hreflang="ru" href="https://site.ru/" />
<link rel="alternate" hreflang="uk" href="https://site.com/uk/" />

Тег hreflang нужен только на канонических страницах

Если страница каноническая и есть потребность в указании языковой версии, hreflang нужен. На дублирующих страницах указывать hreflang не нужно, поскольку он и так будет указан на канонической странице.

Все о rel canonical: как указывать атрибут правильно и зачем он нужен

Из этого и предыдущего правил понятно, как поступать с языковыми версиями для страниц с параметрами.

Как указать hreflang для URL с параметрами

Пользователь поднял эту тему на форуме. 

На его сайте размещена каноническая страница https://example.com/au/publications для Австралии, у нее есть альтернативная версия для США https://example.com/us/publications. Но еще на этой странице есть кнопки, по которым пользователь может получить отдельные результаты — образуются URL с параметрами, например, https://example.com/au/publications?count=50&page=4. 

Как в этом случае проставить hreflang?

Сначала для страницы с параметрами https://example.com/au/publications?count=50&page=4 он указал каноникал и hreflang:

<link rel="canonical" href="https://example.com/au/publications">
<link rel="alternate" hreflang="en-US" href="https://example.com/us/publications">

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

Ошибка указания hreflang
На странице, указанной как альтернативная, нет ссылки на страницу с параметрами

Как нужно сделать в этом примере:

Просто не указывать hreflang для неканонических страниц с параметрами. Для URL https://example.com/au/publications?count=50&page=4 достаточно указать только каноническую ссылку:

<link rel="canonical" href="https://example.com/au/publications">

А для URL https://example.com/au/publications нужно указать каноникал:

<link rel="canonical" href="https://example.com/au/publications" />

И hreflang с каждой существующей языковой версией, а их две — для Австралии и США:

<link rel="alternate" hreflang="en-US" href="https://example.com/us/publications">
<link rel="alternate" hreflang="en-AU" href="https://example.com/au/publications">

Теперь Google видит, что страница с параметрами https://example.com/au/publications?count=50&page=4 — это дубликат страницы https://example.com/au/publications, так что он не будет ее индексировать. 

И еще видит, что https://example.com/au/publications ориентирована на англоязычных пользователей из Австралии и имеет альтернативную версию для пользователей из США, доступную по адресу https://example.com/us/publications.

Структура сайта не важна

Структура сайта не влияет на обработку поисковиками атрибута hreflang. Версии страницы могут быть расположены в разных каталогах:

<link rel="alternate" hreflang="ru" href="https://site.com/o-kompanii/" />
<link rel="alternate" hreflang="en-us" href="https://site.com/company/about/" />
<link rel="alternate" hreflang="uk" href="https://site.com/pro-kompaniyu" />

Также версии страницы могут быть расположены на разных поддоменах и доменах:

<link rel="alternate" hreflang="ru" href="https://ru.site.com/" />
<link rel="alternate" hreflang="en" href="https://en.site.com/" />
<link rel="alternate" hreflang="uk" href="https://site.com.uk/" />

Для страниц с автоматическим определением языка есть свой hreflang

Если на странице есть селектор для выбора языка или язык меняется в зависимости от IP-пользователя, нужен hreflang со значением "x-default". Он указывает, какую страницу показывать по умолчанию или какую отображать, когда другой вариант языка не подходит пользователю. Google отдельно отмечает, что x-default также помогает находить связанные URL в кластере альтернативных страниц.

К примеру, на главной сайта site.com язык меняется в зависимости от IP-адреса пользователя. Тогда ссылку на главную нужно отметить с "x-default", а также нужно указать на версии страниц на других языках:

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

FAQ по разделу

Можно ли ставить hreflang на неканоническую страницу?

Можно, но не нужно. Сначала настройте canonical, а hreflang поставьте на канонические URL.

Обязателен ли x-default?

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

Можно ли указывать относительные URL?

Лучше использовать полные абсолютные адреса с протоколом, так будет меньше ошибок при сканировании.

Как указать атрибут hreflang на сайте

Есть три способа реализовать атрибут hreflang:

  • в HTML;

  • в заголовках HTTP;

  • в файле Sitemap.

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

  • WordPress: Polylang, TranslatePress, WPML или модуль мультиязычности вашей темы;
  • OpenCart: SEO Multilingual, Hreflang Language и другие модули, которые поддерживают связку языковых URL.

Как указать hreflang в HTML

Самый популярный способ — добавить hreflang в HTML каждой страницы, для которой нужно указать альтернативные версии. Теги размещают в секции head, обычно рядом с title, description, canonical и другими SEO-тегами.

Допустим, есть сайт условной компании Super-Company, она работает на Россию, Германию и Великобританию. На нем сделаны региональные страницы с некоторыми отличиями:

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

<head>
 <title>Super-Сompany</title>
  <link rel="alternate" hreflang="ru" href="https://ru.super-company.com/">
  <link rel="alternate" hreflang="en-gb" href="https://en-gb.super-company.com/">
 <link rel="alternate" hreflang="de-de" href="https://de.super-company.com/">
  <link rel="alternate" hreflang="en" href="https://en.super-company.com/">
 <link rel="alternate" hreflang="x-default" href="https://www.super-company.com/">
</head>

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

Как указать hreflang в заголовках HTTP

Указать на версии страницы на других языках можно в заголовке HTTP в ответах на запрос GET страницы. Способ особенно выручает, если нельзя указать код в HTML, например, для файлов в формате PDF.

Для каждой версии страницы нужно указать набор значений < url >, rel = "alternate" и hreflang через запятую. Это касается и запрашиваемой страницы. Заголовок одинаковый для всех вариантов — Link:.

Шаблон такой:

HTTP/1.1 200 OK
Content-Type: application/pdf
Link: <url_1>; rel="alternate"; hreflang="lang_code_1",
<url_2>; rel="alternate"; hreflang="lang_code_2"

Допустим, на сайте есть три версии PDF-файла: для русскоязычных посетителей, отдельно для англоязычных пользователей из США и версия на английском для пользователей из других стран. Код будет выглядеть так:

HTTP/1.1 200 OK
Content-Type: application/pdf
Link: <https://site.com/file.pdf>; rel="alternate"; hreflang="ru",
      <https://en-us.site.com/file.pdf>; rel="alternate"; hreflang="en-us",
      <https://en.site.com/file.pdf>; rel="alternate"; hreflang="en"

Как указать hreflang в Карте сайта — sitemap.xml

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

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

Пространство имен xhtml нужно указывать по образцу:

xmlns:xhtml="http://www.w3.org/1999/xhtml"

Получается, если у страницы три языковых варианта — русский, английский и украинский — в Sitemap будет три элемента с тремя дочерними тегами.

Пример Sitemap для этих трех страниц:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="https://sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="https://www.w3.org/1999/xhtml">
  <url>
    <loc>https://site.com/ru/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://site.com/en/">
    <xhtml:link rel="alternate" hreflang="uk" href="https://site.com/uk/">
    <xhtml:link rel="alternate" hreflang="ru" href="https://site.com/ru/">
  </url>
  <url>
    <loc>https://site.com/en/</loc>
    <xhtml:link rel="alternate" hreflang="ru" href="https://site.com/ru/">
    <xhtml:link rel="alternate" hreflang="uk" href="https://site.com/uk/">
    <xhtml:link rel="alternate" hreflang="en" href="https://site.com/en/">
  </url>
  <url>
    <loc>https://site.com/uk/</loc>
    <xhtml:link rel="alternate" hreflang="ru" href="https://site.com/ru/">
    <xhtml:link rel="alternate" hreflang="en" href="https://site.com/en/">
    <xhtml:link rel="alternate" hreflang="uk" href="https://site.com/uk/">
  </url>
</urlset></xhtml:link></xhtml:link></xhtml:link></xhtml:link></xhtml:link></xhtml:link></xhtml:link></xhtml:link></xhtml:link></urlset>

Легко запутаться, но зато не нужно редактировать несколько HTML-документов каждый раз, когда вы добавляете новую версию или удаляете страницу.

Если вы еще не сформировали файл Sitemap, может быть полезно:
Как составить Карту сайта

FAQ по разделу

Какой способ лучше, HTML или sitemap?

Для небольшого сайта проще использовать HTML. Для крупного мультиязычного сайта sitemap.xml будет удобнее, потому что все связи хранятся в одном месте.

Можно ли смешивать способы?

Можно, но не стоит дублировать разные данные. Если HTML и sitemap противоречат друг другу, ошибки искать станет сложнее.

Нужен ли hreflang для PDF?

Да, если у PDF есть языковые версии. Для файлов лучше использовать HTTP-заголовок Link.

Как проверить правильность hreflang на странице

Проверяйте URL через инспекцию страниц в Google Search Console, смотрите индексируемую каноническую версию и сверяйте разметку в коде, HTTP-заголовках или sitemap.xml. Для Яндекса используйте Яндекс Вебмастер: проверку URL, индексирование страниц и сообщения о проблемах сайта.

Для быстрой проверки HTML подойдут W3C Markup Validation Service и сервис для анализа сайта.

И еще несколько рекомендаций для hreflang

Порядок указания тегов hreflang не имеет значения. Google подтверждал, что очередность элементов link rel="alternate" hreflang в HTML-коде не влияет на обработку. Важнее другое: набор ссылок должен быть одинаковым на всех версиях страницы, а URL должны открываться с кодом 200 и не конфликтовать с canonical.

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

Не заменяйте hreflang атрибутом lang.
Атрибут lang полезен для HTML-документа, браузеров и доступности, но для выбора альтернативных URL поисковикам нужен именно hreflang. Также не указывайте несуществующие языковые версии на будущее: ссылка должна вести на рабочую индексируемую страницу.

    Возьмите под контроль продвижение своего сайта
    Исправьте ошибки, которые мешают сайту выйти в топ, и вы увидите рост трафика и дохода.
    🔍 Подпишись на @prcynews в телеграм — оставайся в курсе последних SEO новостей и свежих материалов.

    Теги поста или какие разделы почитать еще:

    Комментарии (0)
    К данной записи нельзя добавлять комментарии, т.к. она очень старая.
    Карта сайта: полный гайд по созданию, настройке и оптимизации Sitemap
    Метатеги сайта: полный гайд по Title, Description, Canonical, Robots и другим тегам
    Mobile-first индексация Google: как подготовить сайт и не потерять позиции
    SEO-продвижение сайта на WordPress в 2026 году: пошаговый гайд с настройкой и чек-листом
    SEO чек-лист из 80+ пунктов: традиционная поисковая оптимизация, ИИ-поиск и не только
    Robots.txt: полное руководство по управлению индексацией сайта