Отправка локализованных версий страницы в Google

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

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

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

  • Переведен только шаблон веб-страницы (например, панель навигации и нижний колонтитул), а основной контент опубликован на исходном языке. Такой формат характерен для страниц, контент которых создается пользователями (например, сообщения на форумах).
  • На сайте представлены материалы на одном языке, однако они немного различаются в зависимости от региона. Так, контент на английском языке может быть предназначен для пользователей из Великобритании, Ирландии и США.
  • Контент сайта полностью переведен на несколько языков. Например, если у каждой страницы есть версии на немецком и английском языках.

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

Методы указания альтернативных страниц

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

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

Используйте атрибут hreflang, чтобы сообщать Google о том, что определенные страницы представляют собой локализованные варианты одного и того же контента. Роботы Google определяют язык той или иной страницы при помощи специальных алгоритмов, а не атрибута hreflang или HTML-атрибута lang.

Общие рекомендации

  • Каждая языковая версия страницы должна содержать ссылку на версии для других языков, а также на саму себя.
  • URL вариантов страниц должны быть указаны полностью, включая названия протокола (http или https):
    используйте формат https://example.com/foo, а не //example.com/foo или /foo.
  • URL вариантов страниц могут находиться в разных доменах.
  • Если у вас несколько страниц на одном языке, но для разных регионов, мы рекомендуем создать ещё и общий URL без привязки к местоположению. Например, если у вас есть отдельные URL для англоговорящих жителей Ирландии (en-ie), Канады (en-ca) и Австралии (en-au), создайте ещё и общую версию страницы (en) для пользователей из США, Великобритании и других регионов, где также говорят на английском. При желании вы можете использовать в качестве такой общей версии одну из страниц с кодом определенного региона.
  • Если страницы не ссылаются друг на друга, теги будут игнорироваться. Это сделано для того, чтобы на других сайтах нельзя было добавить тег, указывающий, что страница является вариантом одной из ваших страниц.
  • Если указание всех двусторонних ссылок для каждого языка занимает много времени, можно опустить некоторые языки на некоторых страницах: Google в любом случае обработает страницы, ссылающиеся друг на друга. Однако новые языковые версии страниц, за счет которых вы собираетесь расширить аудиторию, должны взаимно ссылаться на основные или исходные варианты. Например, если ваш сайт изначально был создан на французском языке в домене .fr, то важнее настроить двунаправленную переадресацию между основным доменом .fr и новыми страницами, предназначенными для мексиканцев (.mx) и испанцев (.es), а не между этими испаноязычными страницами (.mx и .es).
  • Также можно создать резервную страницу для языков, которых нет на вашем сайте, например страницу для выбора языка/страны или главную страницу с автоматической переадресацией. Для этого используйте значение x-default:
    <link rel="alternate" href="https://example.com/" hreflang="x-default" />

Теги HTML

Добавьте элементы <link rel="alternate" hreflang="lang_code"... > в заголовок своей страницы, чтобы сообщить Google обо всех локализованных вариантах страницы. Это удобно, если у вас нет файла Sitemap или возможности указать HTTP-заголовки ответа для сайта.

В элемент <head> каждого варианта страницы нужно добавить набор элементов <link> со ссылками на все версии страницы, включая ее саму. Во всех версиях страницы используется один и тот же набор ссылок. Подробнее…

Каждый элемент link должен иметь следующую структуру:

<link rel="alternate" hreflang="lang_code" href="url_of_page" />
Синтаксис
lang_code Поддерживаемый код языка и региона, соответствующий версии страницы, или тег x-default для языков, которые не указаны в атрибуте hreflang страницы.
url_of_page Полный URL версии страницы для указанного языка и региона.

Теги <link> должны находиться в правильно сформированном разделе <head> кода HTML. Если у вас есть сомнения, проверьте код отрисованной страницы с помощью валидатора кода HTML. Так вы узнаете, находятся ли теги link внутри элемента <head>. Кроме того, не используйте сочетания тегов link для создания альтернативных версий документа. Например, не следует совмещать аннотации hreflang с другими атрибутами, такими как media, в одном теге <link>.

Пример

Компания Example Widgets, Inc владеет сайтом, который предназначен для пользователей из Великобритании, Германии и США. Перечисленные ниже страницы содержат в целом одинаковый контент с некоторыми различиями, зависящими от целевых регионов.

URL с региональными различиями
https://en.example.com/page.html Главная страница на английском языке с информацией о тарифах на международную доставку из США.
https://en-gb.example.com/page.html Страница для клиентов из Великобритании с ценами в фунтах стерлингов.
https://en-us.example.com/page.html Страница для клиентов из США с ценами в долларах США.
https://de.example.com/page.html Главная страница на немецком языке.
https://www.example.com/ Страница по умолчанию, не предназначенная для определенного языка или региона. Здесь пользователи могут выбрать свой язык и страну.

Обратите внимание, что Google не определяет целевую аудиторию страниц по субдоменам в URL (en, en-gb, en-us, de). Вы должны указать ее явным образом.

Ниже приведен фрагмент кода HTML, который нужно было бы вставить в раздел <head> всех перечисленных в таблице выше страниц. Благодаря этому фрагменту у пользователей из США и Великобритании, прочих англоговорящих пользователей и тех, кто говорит по-немецки, открывались бы подходящие локализованные страницы, а у всех остальных – страница по умолчанию. В результатах поиска будет показываться страница, соответствующая настройкам браузера пользователя.

<head>
 <title>Widgets, Inc</title>
  <link rel="alternate" hreflang="en-gb"
       href="https://en-gb.example.com/page.html" />
  <link rel="alternate" hreflang="en-us"
       href="https://en-us.example.com/page.html" />
  <link rel="alternate" hreflang="en"
       href="https://en.example.com/page.html" />
  <link rel="alternate" hreflang="de"
       href="https://de.example.com/page.html" />
 <link rel="alternate" hreflang="x-default"
       href="https://www.example.com/" />
</head>

Заголовки HTTP

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

Заголовок должен иметь следующий синтаксис:

Link: <url1>; rel="alternate"; hreflang="lang_code_1", <url2>; rel="alternate"; hreflang="lang_code_2", ...
Синтаксис
<url_x> Полный URL альтернативной версии страницы, соответствующей региональным настройкам, указанным в связанном атрибуте hreflang. URL должен быть заключен в угловые скобки: < и >. Пример: <https://www.google.com>
lang_code_x Поддерживаемый код языка и региона, соответствующий версии страницы, или значение x-default для языков, которые не указаны отдельно в атрибутах hreflang на этой странице.

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

Пример

Ниже приведен пример заголовка Link:, возвращаемого сайтом, где есть три версии PDF-файла: для англоговорящих посетителей, для швейцарцев, говорящих на немецком, и немецкая версия для пользователей из других стран.

Link: <https://example.com/file.pdf>; rel="alternate"; hreflang="en",
      <https://de-ch.example.com/file.pdf>; rel="alternate"; hreflang="de-ch",
      <https://de.example.com/file.pdf>; rel="alternate"; hreflang="de"

Файл Sitemap

Сообщить Google о том, что на вашем сайте есть версии для разных языков или стран, можно с помощью XML-файла Sitemap. Для этого добавьте в него элемент <loc>, указав в нем URL страницы, а в дочерних тегах <xhtml:link> – ссылки на все ее языковые и региональные варианты, включая саму страницу. Таким образом, если у вас есть три варианта страницы, то в файле Sitemap будет запись для URL каждого варианта и в каждой из записей будет три идентичных дочерних тега.

Правила в отношении файлов Sitemap

  • Указывайте пространство имен xhtml следующим образом:
    xmlns:xhtml="http://www.w3.org/1999/xhtml"
  • Создавайте отдельный элемент <url> для каждого URL, как при работе с любыми файлами Sitemap.
  • В каждом элементе <url> должен быть дочерний элемент <loc>, в котором указывается URL страницы.
  • В каждом элементе <url> должен быть дочерний элемент <xhtml:link rel="alternate" hreflang="supported_language-code">, в котором перечисляются все варианты страницы, включая текущую. Порядок дочерних элементов <xhtml:link> не имеет значения, но вы можете придерживаться определенной последовательности, чтобы было проще отслеживать ошибки. Дочерние элементы не учитываются в рамках ограничения на количество URL в файлах Sitemap.
  • Добавляйте файлы Sitemap в те каталоги на сайте, с которыми они соотносятся. Напоминаем, что файл Sitemap может содержать только дочерние URL из каталога, в котором он размещен.
  • Наша документация по файлам Sitemap также относится к файлам Sitemap с расширенным синтаксисом. Соблюдайте общие рекомендации в отношении файлов Sitemap.
  • Подробнее…

Пример

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

  • www.example.com/english/page.html – страница для англоговорящих пользователей.
  • www.example.de/deutsch/page.html – страница для пользователей, говорящих на немецком.
  • www.example.de/schweiz-deutsch/page.html – страница для пользователей из Швейцарии, говорящих на немецком.

Ниже приведен файл Sitemap для этих трех страниц.

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
  xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>https://www.example.com/english/page.html</loc>
    <xhtml:link
               rel="alternate"
               hreflang="de"
               href="https://www.example.de/deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="de-ch"
               href="https://www.example.de/schweiz-deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="en"
               href="https://www.example.com/english/page.html"/>
  </url>
  <url>
    <loc>https://www.example.de/deutsch/page.html</loc>
    <xhtml:link
               rel="alternate"
               hreflang="de"
               href="https://www.example.de/deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="de-ch"
               href="https://www.example.de/schweiz-deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="en"
               href="https://www.example.com/english/page.html"/>
  </url>
  <url>
    <loc>https://www.example.de/schweiz-deutsch/page.html</loc>
    <xhtml:link
               rel="alternate"
               hreflang="de"
               href="https://www.example.de/deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="de-ch"
               href="https://www.example.de/schweiz-deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="en"
               href="https://www.example.com/english/page.html"/>
  </url>
</urlset>

Поддерживаемые коды языков и регионов

Значение атрибута hreflang состоит из одного или двух (не обязательно) значений, разделенных дефисом. Пример: en-US. Первая часть атрибута hreflang определяет код языка (в формате ISO 639-1), вторая необязательная часть определяет код региона (в формате ISO 3166-1 Alpha 2) альтернативного URL.

Для говорящих на разных языках жителей Бельгии можно использовать следующие коды языков и регионов:

  • Корректно (немецкий для пользователей из Бельгии): de-be
  • Корректно (нидерландский для пользователей из Бельгии): nl-be
  • Корректно (французский для пользователей из Бельгии): fr-be
  • Не корректно, так как первая часть кода определяет язык (be является языковым кодом для Белоруссии): be

Чтобы упростить разметку, вы можете указать только код языка. Пример:

  • de – контент на немецком языке для любого региона;
  • en-GB – контент на английском языке для пользователей из Великобритании;
  • de-ES – контент на немецком языке для пользователей из Испании.

Если в языке несколько систем письма, то нужный вариант выбирается с учетом кода страны. Например, для пользователей из Тайваня с кодом zh-TW будет автоматически задан китайский язык с традиционной иероглификой. Набор символов также можно задать явным образом с помощью кодов ISO 15924, как показано ниже:

  • zh-Hant – китайский (традиционный);
  • zh-Hans – китайский (упрощенный).

При необходимости можно указать код региона, например так: zh-Hans-US (китайский традиционный для пользователей в США).

Как с помощью значения x-default настроить страницу для пользователей, для которых нет языковой версии

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

Код языка при этом не указывается, поскольку значение x-default говорит о том, что страница предназначена для пользователей, у которых в настройках браузера задан язык, не используемый на сайте.

Чтобы добавить аннотацию для элемента hreflang="x-default", добавьте дополнительный тег link к существующим аннотациям hreflang и укажите атрибут href в URL, который вы хотите сделать стартовой страницей для пользователей, если ваш сайт не переведен на их язык. Например, внедрить HTML можно следующим образом:

<link rel="alternate" href="https://example.com/en-gb" hreflang="en-gb" />
<link rel="alternate" href="https://example.com/en-us" hreflang="en-us" />
<link rel="alternate" href="https://example.com/en-au" hreflang="en-au" />
<link rel="alternate" href="https://example.com/country-selector" hreflang="x-default" />

Устранение неполадок

Распространенные ошибки

Ниже перечислены наиболее часто встречающиеся ошибки в применении атрибута hreflang.

  • Нет обратных ссылок. Если страница X содержит ссылку на страницу Y, то на странице Y должна быть обратная ссылка. В противном случае атрибуты hreflang могут быть не прочтены или неправильно интерпретированы. Предположим, на странице https://de.example.com/index.html есть следующая ссылка:
    <link rel="alternate" hreflang="en-gb" href="https://en-gb.example.com/index.html" />
    . Тогда на страницу https://en-gb.example.com/index.html нужно добавить обратную ссылку с атрибутом hreflang , которая будет указывать на версию контента на немецком языке (de):
    <link rel="alternate" hreflang="de" href="https://de.example.com/index.html" />
    .
  • Неверно заданы языковые коды. Во всех языковых кодах должен указываться язык (в формате ISO 639-1) и может также указываться регион (в формате ISO 3166-1 Alpha 2) альтернативного URL. Указывать только регион нельзя.

Устранение неполадок с атрибутом hreflang

Для отладки аннотаций с атрибутом hreflang можно использовать различные сторонние инструменты. Вот некоторые их них (Google не проверяет и не обеспечивает их работоспособность).