Hreflang без містики: зрозуміле пояснення

«Чому Google показує мою англійську сторінку тому, хто шукає французькою?» — майже завжди проблема hreflang, і майже завжди маленька, тиха. Hreflang — проста ідея, що ламається мовчки: помилися трохи — і нічого не видасть помилку, нічого не попередить, пошукові системи просто перестануть її враховувати. Ось що вона робить, кілька способів, якими вона ламається, і як перевірити свою вручну.

Маркетинг і CRM в адмінпанелі Olmira

Що насправді робить hreflang

Анотація hreflang — це підказка на сторінці, яка по суті каже: «цей URL і той URL — це той самий вміст різними мовами (за бажанням — для різних регіонів); коли хтось шукає тією мовою, розглянь можливість віддати йому той URL». Реалізується вона як набір тегів сторінки або, що рівнозначно, в XML-sitemap) — по одному на кожен мовний чи регіональний варіант, і всі вони посилаються одне на одного.

Типові збої, що стоять майже за кожною скаргою «не та мова»

Помилки hreflang мають спільну рису: жодна з них ніде не спричиняє помилки. Сторінка й далі завантажується. Теги й далі на місці. Вони просто хибні в такий спосіб, який помічає лише пошукова система — або уважна перевірка людиною.

Невзаємні теги Якщо сторінка A оголошує альтернативу, що вказує на сторінку B, але сторінка B не оголошує альтернативи, яка вказує назад на A, пара зламана — і задокументована поведінка провідних пошукових систем полягає в тому, щоб не довіряти невзаємним анотаціям або ігнорувати їх, а не враховувати їх частково. Це найпоширеніша на практиці вада hreflang, бо легко додати сторінку новою мовою й забути оновити набір тегів усіх інших мов так, щоб вони на неї посилалися.

Теги, що вказують на неканонічну, перенаправлену або 404 URL-адресу Альтернатива має вказувати на справжню, робочу, канонічну версію сторінки цією мовою — не на стару URL-адресу, яка тепер перенаправляє, і не на URL-адресу, що вимагає входу або повертає помилку пошуковому роботу.

Часткове покриття в межах кластера Hreflang, правильно проставлений на частині сторінок перекладеного розділу, але відсутній на решті, дає суперечливий сигнал по всьому кластеру, а це підриває довіру й до тих тегів, які є правильними.

Дубльовані або суперечливі теги з кількох джерел На сайтах, де теги в head може вставляти більш ніж одна ділянка коду — скажімо, скрипт рівня сторінки і спільний для всього сайту макет, — змагання між ними може лишити в підсумковій розмітці дубльовані або взаємно суперечливі теги hreflang. Це реальний і непомітний клас вад саме тому, що він невидимий при швидкому візуальному огляді відрендереної сторінки; він виявляється лише при уважному читанні самого вихідного коду .

Hreflang без відповідного запису в sitemap Пошукові системи використовують sitemap як сигнал пріоритету сканування; URL-адреса, оголошена мовною альтернативою, але яка ніколи не з'являється в sitemap, може просто скануватися пізніше або рідше, ніж сторінки, які ви насправді намагаєтеся вивести в топ.

Як перевірити власний сайт вручну

Спеціальні інструменти для першого проходу не потрібні. Перегляньте вихідний код сторінки — справжній вихідний код, а не лише відрендерений DOM — і знайдіть кожен тег . Для двох-трьох мовних пар підтвердіть, що кожен вказує назад: якщо /page оголошує hreflang="es", що вказує на /es/page, відкрийте /es/page і підтвердьте, що вона оголошує тег, який вказує назад на /page. Потім підтвердіть, що існує рівно один x-default, який резолвиться на робочу сторінку, і що кожна URL-адреса в наборі завантажується напряму — без редиректу, без 404 — і збігається з власною канонічною адресою тієї сторінки. На невеликому сайті цей ручний прохід ловить більшість реальних помилок.

Як виглядає правильне налаштування hreflang

1

Кожен варіант — взаємний

Кожна мовна версія сторінки перелічує всі інші мовні версії — включно із собою — як альтернативні, тож набір повністю взаємний, а не одностороннє припущення.

2

Один x-default, який завжди відкривається

Рівно одна альтернатива позначена як x-default, і вона вказує на реальну робочу сторінку — зазвичай на версію вашою мовою за замовчуванням.

3

Власний canonical для кожної мови

Тег canonical кожної мовної версії вказує на неї саму, а не на версію мовою за замовчуванням: сторінка не має водночас оголошувати себе альтернативою іншої URL-адреси та її канонічним дублікатом.

4

Генерується, а не ведеться вручну

На будь-якому сайті, більшому за кілька сторінок, ручне написання взаємних наборів тегів для кожної мовної пари — саме та задача, яка непомітно розходиться з реальністю. Генерування набору з єдиного джерела істини (оголошеного списку мов сторінки) робить теги всіх сторінок узгодженими за побудовою.

Конструктор сайтів в адмінпанелі Olmira

Як це влаштовано в Olmira

Hreflang і альтернативи x-default сайту на Olmira генеруються з одного джерела — оголошеного списку мов сторінки — в момент, коли активні дві чи більше мов. Взаємність — побічний продукт того, як побудовані теги, а не щось, що авторується для кожної сторінки, і теги видаються один раз, централізовано, для кожного маршруту — саме щоб уникнути описаного вище режиму збою з дубльованими й конкуруючими тегами.

x-default завжди резолвиться на власну URL-адресу типової мови сайту без префікса, і кожна мовна версія має власний самопосилальний канонічний тег. Які мови вести й наскільки повною має бути кожна перед публікацією — залишається вашим рішенням: це гід із багатомовної структури; механіка тегів працює однаково на кожній сторінці конструктора сайтів.

Нехай теги керуються самі

Кожна додана вами мова автоматично отримує коректний взаємний hreflang — жодних списків тегів, які треба вести вручну.