Проверка hreflang
Введите адрес страницы, у которой есть версии на нескольких языках. Мы прочитаем её строки hreflang, проверим каждый код, а затем откроем каждую альтернативную версию: отвечает ли она, может ли индексироваться и ссылается ли в ответ на эту страницу.
Список близнецов, повторённый у каждого близнеца
Когда одна и та же страница существует на английском, немецком и японском, поисковик видит три разные страницы. С помощью hreflang вы сообщаете ему, что это одна страница в трёх версиях, и читатель в Берлине получает немецкий адрес, а не английский. Каждая версия содержит полный список версий, включая себя:
<link rel="alternate" hreflang="en" href="https://www.example.com/en/pricing/">
<link rel="alternate" hreflang="de" href="https://www.example.com/de/preise/">
<link rel="alternate" hreflang="ja" href="https://www.example.com/ja/pricing/">
<link rel="alternate" hreflang="x-default" href="https://www.example.com/en/pricing/">Список может находиться в трёх местах: в <head> страницы, в заголовке ответа Link или в XML-карте сайта. Эта проверка читает первые два. Карты сайта она не читает, поэтому страница без аннотаций здесь всё ещё может быть описана там.
Hreflang меняет то, какая версия показывается. На позиции страницы он не влияет. Поисковики считают его подсказкой и отбрасывают, как только видят противоречие, поэтому мелкие ошибки обходятся так дорого.
Как выглядит правильный код
Значение состоит из языка, за которым могут идти письменность и страна, через дефис. Регистр букв не важен.
| Часть | Стандарт | Примеры |
|---|---|---|
| Язык (обязательно) | ISO 639-1, две буквы | en, de, ja, pt |
| Письменность (необязательно) | ISO 15924, четыре буквы | zh-Hans, zh-Hant, sr-Latn |
| Страна (необязательно) | ISO 3166-1, две буквы | en-GB, pt-BR, zh-Hant-TW |
Страна никогда не стоит одна и никогда не идёт первой. Вот ошибки, которые называет эта проверка, с исправлением, когда оно единственно возможное:
en-UK: ISO-код Великобритании:GB.en_US: подчёркивание, как пишут локали в программах. Hreflang требуетen-US.es-LA: читается как испанский для Лаоса. Кода для Латинской Америки Google не понимает, поэтому используйтеesили отдельную строку для каждой страны.jp,cn,cz,dk: коды стран, использованные как языки. Языки обозначаютсяja,zh,cs,da.en-EU,es-419, трёхбуквенные коды вродеengи устаревшие коды вродеiwдля иврита.
В таблице результатов каждый код расшифрован словами. Так видны ошибки, которые не поймает ни одно правило, например uk: это вполне правильный код, и он означает украинский.
Что проверяется на самой странице
- Адреса. Каждой строке нужен полный адрес со схемой и хостом. Относительные адреса попадают в отчёт.
- Дубли и конфликты. Одна и та же строка дважды ничему не вредит и отмечается как замечание. Один код у двух разных адресов: это ошибка, потому что никто не может сказать, какая страница является версией для этого языка.
- Ссылка на себя. Страница должна быть в собственном списке, с точно таким же адресом. Достаточно пропущенной косой черты в конце, чтобы совпадение пропало.
- x-default. Версия для читателей, чей язык не указан. Она необязательна, поэтому её отсутствие даёт примечание и не считается ошибкой.
- Canonical. Hreflang работает только между каноническими страницами. Немецкая страница, чей canonical указывает на английскую, велит поисковикам забыть немецкую, а вместе с ней и её строки hreflang.
- Атрибут
lang. Если<html lang>говоритsv, а страница указывает себя какse, одно из двух неверно. - Расположение. Строки, оказавшиеся вне
<head>(часто потому, что случайный элемент закрывает head раньше времени), Google игнорирует, а здесь они отмечаются.
Обратные ссылки: половина, которая обычно ломается
Аннотация засчитывается, только если обе страницы согласны. Если английская страница говорит «моя немецкая версия вон там», а немецкая не говорит «моя английская версия вот здесь», пара отбрасывается. Поэтому, прочитав вашу страницу, наш сервер один раз запрашивает каждую альтернативу, не следуя за перенаправлениями, и сообщает по каждой:
- Статус
- Ответ должен быть 200. Перенаправление значит, что строка указывает не на конечный адрес. Ошибка значит, что версии больше нет. Перенаправление у x-default допускается: именно так и работает выбор языка.
- Индексируется
- Нет
noindexни в метатеге robots, ни в заголовкеX-Robots-Tag. - Canonical на себя
- Её canonical, если он есть, должен быть её собственным адресом.
- Ссылается в ответ
- В её собственном блоке должна быть ваша страница, под тем же кодом, которым ваша страница обозначает себя.
Если исправления механические (опечатка в коде, относительный адрес, повторённая строка, нет строки для самой страницы), в конце результата будет исправленный блок, который можно вставить. Строки, где нужно ваше решение, остаются как есть и помечаются комментарием.
Одна проверка открывает не больше 35 альтернатив и останавливается примерно через полминуты. Пропущенные отмечены в таблице. Аннотации, которые добавляет JavaScript, мы не видим, а сайт, перенаправляющий посетителей по местоположению, может показать нашему серверу не то, что получает поисковый робот.
Частые вопросы
Нужен ли hreflang, если сайт на одном языке?
Нет. Hreflang связывает между собой версии одной и той же страницы. Когда версия одна, связывать нечего, и проверка сообщает «аннотаций нет» как нейтральный результат.
Что такое x-default и обязателен ли он?
Это строка для всех, кого не охватывают остальные строки, например для читателя, чьего языка у вас нет. Обычно она указывает на английскую версию или на страницу, где посетитель выбирает язык. Она рекомендуется, но не обязательна.
Указывать только код языка или добавлять страну?
Указывайте только язык (de), когда одна страница обслуживает всех, кто говорит на этом языке. Страну (de-AT, de-CH) добавляйте, только если публикуете разные страницы для разных стран, например из-за цен или доставки. Можно сочетать оба варианта: строки со страной для конкретных страниц и простая строка языка как общая.
Что значит «нет обратной ссылки»?
Ваша страница называет другую версию, но эта версия не называет вашу страницу в своём блоке hreflang. Односторонние аннотации поисковики игнорируют. Чтобы исправить, выводите один и тот же полный список на каждой версии, лучше всего из одного общего источника.
Может ли hreflang указывать на другой домен?
Да. example.com и example.de могут быть версиями друг друга, если каждый указывает другого и себя. Правила те же, что и внутри одного домена.
Заменяет ли hreflang тег canonical?
Нет. У них разные задачи, и они должны согласовываться. Canonical говорит, какой адрес представляет страницу среди её дублей, а hreflang говорит, какие другие страницы являются её переводами. Каждая языковая версия должна быть канонической сама для себя.