Международное SEO: hreflang и структура сайта
Международное SEO — это работа с версиями сайта для разных языков и регионов, и главный его инструмент — аннотации hreflang. Они сообщают Google, какие страницы являются локализованными вариантами одного содержимого. Важно понимать, чего hreflang не делает: Google не определяет по нему язык страницы и не «угадывает» без него неверно в каждом случае. Ниже — по справке Google о локализованных версиях и руководству по мультирегиональным сайтам: правила записи, коды, структура адресов, чего не делать и какие популярные утверждения не подтверждены.
Зачем указывать версии
Google может найти языковые версии и сам, но справка советует указывать их явно: так Поиск точнее подбирает версию по языку или региону. Рекомендуется это в таких случаях: основное содержимое на одном языке, а переведён только шаблон (навигация, подвал — как на форумах с пользовательским контентом); небольшие региональные различия в одном языке (например, английский для США, Великобритании и Ирландии); полностью переведённый сайт. Локализованные версии считаются дубликатами, только если основное содержимое осталось непереведённым (дублированный контент).
Три способа указать версии
Google поддерживает три способа: теги в HTML, HTTP-заголовок и карта сайта. С точки зрения Google они равнозначны, выбирайте удобный. Использовать все три можно, но пользы в поиске это не даёт, а поддерживать три реализации сложнее.
<head> <link rel="alternate" hreflang="en-GB" href="https://example.com/en-gb/page/" /> <link rel="alternate" hreflang="en-US" href="https://example.com/en-us/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/" /> </head>
- HTML: элементы
<link rel="alternate" hreflang="…">в<head>; набор ссылок одинаков в каждой версии и включает ссылку на саму страницу. Не объединяйте hreflang с другими атрибутами (например,media) в одном теге. - HTTP-заголовок: подходит для не-HTML файлов, например PDF; заголовок
Linkсо всеми версиями, включая запрошенную. - Карта сайта: для каждого URL —
<xhtml:link rel="alternate" hreflang="…">со всеми версиями, включая саму страницу (XML-карта).
Правила для всех способов
- Каждая версия перечисляет себя и все остальные.
- Связи должны быть взаимными. Если две страницы не указывают друг на друга, теги игнорируются: так посторонний сайт не может объявить себя вашей версией. Если полный набор поддерживать трудно, на некоторых страницах можно пропускать часть языков; но новые версии нужно обязательно связать в обе стороны с исходной.
- Адреса полные, с протоколом:
https://example.com/foo, а не//example.com/fooили/foo. Альтернативы могут быть и на других доменах. - Резервная страница. Если есть отдельные версии для одного языка в разных регионах (
en-IE,en-CA,en-AU), предусмотрите общую (en) для остальных. Для несопоставленных языков, особенно для страниц выбора языка или главных с автоперенаправлением, советуютx-default. Справка говорит «рассмотрите», а не «без него Google не знает, что показать».
Коды языков и регионов
Значение hreflang состоит из кода языка по ISO 639-1 и необязательного кода региона по ISO 3166-1 Alpha 2 через дефис. Поддерживаются только коды из этих стандартов: например, es-419 не поддерживается. Регистр не важен, но регион принято писать заглавными (en-GB). Нельзя указывать только страну: первый код — это язык, и Google не выводит его из страны. Поэтому для бельгийцев: de-BE, nl-BE, fr-BE, а просто be — это белорусский язык. Допустимы и записи только с языком (de) и варианты письма — zh-Hant, zh-Hans. Таким образом, ru и ru-RU — разные записи: первая для языка независимо от региона, вторая для пользователей из России.
Как Google определяет язык страницы
Google не использует hreflang и атрибут lang для определения языка страницы: он смотрит на видимое содержимое. Помогите ему: один язык для текста и навигации на странице, без параллельных переводов. Если переведён только шаблон, а основной текст остался на одном языке, пользователь может увидеть в выдаче одно и то же содержимое с разной обвязкой.
Структура адресов
Справка рекомендует отдельные адреса для каждой языковой версии, а не подмену языка по cookie или настройкам браузера. Динамическое переключение может привести к тому, что Google не найдёт все версии: Googlebot обычно приходит из США и не задаёт заголовок Accept-Language. Варианты структуры:
| Вариант | Плюсы | Минусы |
|---|---|---|
| Домен страны (example.de) | чёткое геотаргетирование; расположение сервера неважно; сайты легко разделить | дорого, нужна инфраструктура, строгие требования к доменам; только одна страна |
| Поддомен (de.example.com) | легко настроить; серверы можно размещать по-разному | пользователь не поймёт по адресу, язык это или страна |
| Подпапка (example.com/de/) | легко настроить, низкая нагрузка поддержки на одном хосте | геотаргетинг по адресу менее очевиден; один сервер |
Названия поддоменов вроде en-gb Google не использует для определения аудитории: целевую аудиторию нужно явно указать hreflang. Подробнее о доменах — в уроке про домены и поддомены.
Чего не делать
- Не перенаправляйте автоматически пользователя на другую языковую версию по предполагаемому языку: это может помешать пользователям и поисковым системам видеть все версии (редиректы). Вместо этого добавьте ссылки на другие версии.
- Не используйте анализ IP для подмены содержимого: он ненадёжен, а большинство обходов Google идёт из США.
- Не полагайтесь на «автоматический перевод в масштабе». Политики против спама называют злоупотреблением масштабным контентом, в частности, создание множества страниц из скопированного содержимого, в том числе с автоматической обработкой — подменой синонимов, переводом, — если пользователю они почти не дают ценности (политики против спама, урок). Запрета на любой машинный перевод в этом тексте нет, но ценность для читателя нужна.
- Не указывайте несуществующие адреса: ссылки должны вести на рабочие страницы без перенаправления (canonical каждой версии — на саму себя).
Как проверять эффект
Отсутствие hreflang — не обязательно ошибка, а наличие — не гарантия. Проверяйте на данных: по странам и запросам в Search Console и по сеансам в аналитике. Изменения вносите по плану с контролем (SEO-эксперименты). Утверждения вида «без hreflang Google часто ошибается» и показатели вроде «CTR 0,5% и отказы 90%» — частные случаи, а не документация.
Чек-лист
- Для каждой языковой версии отдельный адрес; основное содержимое переведено.
- Выбран один способ указания версий: HTML, заголовок или карта сайта.
- Каждая версия перечисляет себя и все остальные; связи взаимные; адреса полные.
- Коды: ISO 639-1 + необязательный ISO 3166-1 Alpha 2; регион отдельно не указывается.
- Есть общая или резервная версия (
x-default) для несопоставленных языков. - Нет автоперенаправления по языку и подмены по IP; есть ссылки на другие версии.
Ошибки
- Считать, что hreflang определяет язык страницы.
- Указывать hreflang только на одной версии или не включать в набор саму страницу.
- Писать
beвместоfr-BEилиes-419. - Подключать все три способа сразу и расходиться в данных.
- Массово генерировать переводы без ценности для читателя.
Что дальше
Дальше — модуль «Исследования в SEO»: начнём с SEO-экспериментов, чтобы проверять такие изменения на данных, а не на рассказах.