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

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

orig
Источник фото: Блог Яндекс.Вебмастера

Статья написана в рамках статейного конкурса Serpstat и SEOnews. Условия конкурса.

Если вы делаете мультиязычный сайт, то конечно, вас будет больше всего интересовать поисковая система Google и Яндекс, но я собрал и информацию о том, как относятся к hreflang и другие ПС: Mail.ru, Bing, Yahoo!

Архитектура сайта

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

  1. Разные доменные зоны: т.е. вы регистрируете для каждого региона свой сайт. Например: mydomen.ru для России, mydomen.fr — для Франции, mydomen.de — для Германии.
  2. Поддомены: регистрируете основной домен в международной зоне, а для каждой страны\языка создаете поддомен. Например: mydomen.com — для основного язык\страны (любого), а дальше создаем для каждого языка\страны свой поддомен — ru.mydomen.com — для России\русского языка, de.mydomen.com — для Германии\немецкого языка и т.д.
  3. Вложенные папки: т.е. у вас есть домен, а каждая языковая версия сайта находится в отдельной папке. mydomen.com/ru/ — для России\русского языка, mydomen.com/de/ — для Германии\немецкого языка и т.д.

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

Как настроить hreflang на сайте?

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

Значения языковых атрибутов

Значения языковых атрибутов, которые нужно использовать, указываются в формате ISO 639-1, а стран в формате ISO 3166-1 .

Три варианта реализации hreflang:

  1. Атрибут hreflang в head документа.
  2. Заголовок Link в HTTP-ответе страницы
  3. Файл Sitemap

Рассмотрим каждый подробнее:

1. Атрибут hreflang в head документа

Самый распространенный: код атрибута hreflang должен быть расположен на каждой странице сайта в head документа.

Рассмотрим вариант, когда у сайта 5 языковых версий: основная — http://mydomen.me/ и 4 дополнительных: на английском, украинском, немецком, шведском.

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

1
2
3
4
5
<link rel="alternate" hreflang="ru" href="http://mydomen.me/" />
<link rel="alternate" hreflang="en" href="http://mydomen.me/eng/" />
<link rel="alternate" hreflang="uk" href="http://mydomen.me/ukr/" />
<link rel="alternate" hreflang="de" href="http://mydomen.me/deu/" />
<link rel="alternate" hreflang="sv" href="http://mydomen.me/swe/" />

Для всех остальных, страниц конструкции /{язык}/XXXXXXX/ код в head:

1
2
3
4
5
<link rel="alternate" hreflang="ru" href="http://mydomen.me/rus/{XXXXXXX}/" />
<link rel="alternate" hreflang="en" href="http://mydomen.me/ukr/{XXXXXXX}/" />
<link rel="alternate" hreflang="uk" href="http://mydomen.me/ukr/{XXXXXXX}/" />
<link rel="alternate" hreflang="de" href="http://mydomen.me/deu/{XXXXXXX}/" />
<link rel="alternate" hreflang="sv" href="http://mydomen.me/swe/{XXXXXXX}/" />

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

1
<link rel="alternate" href="http://example.com/" hreflang="x-default" />

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

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

2. Заголовок Link в HTTP-ответе страницы

Помимо элемента link можно использовать заголовок Link в HTTP-ответе для обозначения языка и\или региона страницы. Если у страницы http://mydomen.com/ на основном языке, есть еще две языковые версии на русском и испанском, то нужно использовать следующий HTTP-заголовок, чтобы указать URL на других языках:

1
Link: <http://mydomen.com/ru/>; rel="alternate"; hreflang="ru", <http://mydomen.com/es/>; rel="alternate"; hreflang="es",

Т.е. все альтернативные версии нужно перечислить через запятую.

Код php:

1
header('Link: <http://mydomen.com/ru/>; rel="alternate"; hreflang="ru", <http://mydomen.com/es/>; rel="alternate"; hreflang="es"');

Проверить код ответа сервера, можно например, тут. Должно получиться как-то так:

link

3. Файл Sitemap

Не смотря на то, что в 2013 году Яндекс и Google договорились о способе показывать контент пользователям из разных стран. Sitemap не поддерживается поисковой системой Яндекс, а вот Google c успехом поддерживает такой формат.

Пример для варианта, когда у страницы на английском языке http://mydomen.com/en/ есть ещё 2 альтернативных версии: на немецком для всего мира, и немецком для Швейцарии.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?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>http://mydomen.com/en/</loc>
 <xhtml:link rel="alternate" hreflang="de" href="http://mydomen.com/de/" />
 <xhtml:link rel="alternate" hreflang="de-ch" href="http://mydomen.com/sc-de/" />
 <xhtml:link rel="alternate" hreflang="en" href="http://mydomen.com/en/" />
</url>
 
<url>
 <loc>http://mydomen.com/de/</loc>
 <xhtml:link rel="alternate" hreflang="en" href="http://mydomen.com/en/" />
 <xhtml:link rel="alternate" hreflang="de-ch" href="http://mydomen.com/sc-de/" />
 <xhtml:link rel="alternate" hreflang="de" href="http://mydomen.com/de/" />
</url>
 
<url>
 <loc>http://www.mydomen.com/sc-de/</loc>
 <xhtml:link rel="alternate" hreflang="de" href="http://mydomen.com/de/" />
 <xhtml:link rel="alternate" hreflang="en" href="http://mydomen.com/en/" />
 <xhtml:link rel="alternate" hreflang="de-ch" href="http://mydomen.com/sc-de/" />
</url>
</urlset>

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

yandex-webmaster-xhtml-link

Корректность работы валидатора мне подтвердил и Платон:

«Да, наш робот сейчас не поддерживает обработку таких тегов, поэтому они будут им игнорироваться. Информация из остальных тегов при этом будет восприниматься им корректно, поэтому на обход страниц, указанных в файле sitemap, это отразиться не должно, и Вы можете игнорировать данное предупреждение.

Когда возможность полной обработки подобных файлов будет реализована, Вы сможете узнать о ней непосредственно из сервиса Яндекс.Вебмастер или нашего блога».

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

Поисковая система mail.ru

Информации о том, использует или нет как-то поисковый робот mail.ru атрибут hreflang найти не удалось, в справке есть только информация о том, что «на данный момент индексируются страницы на русском, английском, белорусском, украинском, казахском языках. Поддерживаются все распространенные кодировки».

Поисковая система Bing

Bing похоже тоже не воспринимает hreflang, но предлагает инструмент настройки гео-таргинта (информация на английском). Вы можете привязать нужные директории к нужным странам.

geo-bing

Если же проходить SEO-аудит сайта через инструменты Bing, то под номером 1 идёт ошибка отсутствия мета-данных языка для страницы.

seo-bing

И тут уже Bing предлагает использовать content-language, а не hreflang: «Метаданные языка «content-language» используются в качестве подсказки, которая позволяет понять, на каком языке написана страница и для какой страны/региона она предназначена. Это может быть полезно, если сайт размещен не в вашей стране/регионе». Но есть мнение, что данная конструкция устарела ещё в 2011 году, и надо использовать <html lang=»ru»>

Кстати, обзор Вебмастера Bing я уже писал (правда не проверял, на сколько информация уже устарела).

Поисковая система Yahoo!

Yahoo! оповещает вебмастеров, что цель поиска — это индексировать доступный в интернете контент. А единственным способ помочь в этом ему добавить сайт в Вебмастер Bing, поэтому видимо отношение к мультиязычности у него совпадает с поисковой системой Bing.

В заключение

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

Я со своей командой готов сделать это за вас! Заказать!

* – поля, обязательные для заполнения