Перейти до вмісту
SEOAudit
← Назад до блогу
Технічне SEO

Помилки hreflang на багатомовному сайті: як знайти й виправити

SEOAudit8 хв читання

Помилки hreflang найчастіше виникають через дрібниці: код ua замість uk, пропущене посилання на саму сторінку, відсутня відповідь з іншої мовної версії. У таких випадках Google може проігнорувати всю групу позначок, і користувач із пошуку побачить не ту мову. Нижче розібрано, що саме має бути в тегах, які помилки трапляються найчастіше і як перевірити сайт за кілька хвилин.

Атрибут hreflang сповіщає пошукову систему, що в сторінки є версії іншими мовами або для інших регіонів. Це не фактор підвищення позицій, а підказка, яку версію показати конкретному користувачеві. Тому помилка в ньому не штрафує сайт, а просто зводить користь від атрибута до нуля. Приклади для багатомовного сайту беремо з цього сайту: він доступний українською (без префікса в адресі), англійською (/en) та іспанською (/es).

Що робить hreflang і чого він не робить

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

Важливо розуміти межі. Hreflang не робить сторінку вищою в видачі, не замінює переклад і не об'єднує сигнали різних мов в один. Це лише вказівка щодо вибору версії, і Google розглядає її як підказку, а не як наказ. Якщо дві версії майже ідентичні (наприклад, англійська для США та Великої Британії з однаковим текстом), атрибут допомагає розвести їх за регіоном.

Другий момент: hreflang працює тільки тоді, коли кожна версія доступна для обходу. Якщо одна з мовних сторінок закрита в robots.txt, віддає редирект або містить noindex, пошукова система не зможе її використати, а сама позначка стане хибним посиланням. Тому перевірка hreflang завжди починається з перевірки того, що всі адреси в групі відповідають кодом 200 і індексуються.

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

Як виглядає правильний набір тегів

Найчастіший спосіб: елементи link у head кожної сторінки. Кожна версія містить повний перелік усіх версій, включно з собою, та запис x-default. Ось набір для цієї статті на цьому сайті:

<link rel="alternate" hreflang="uk" href="https://seoaudit.com.ua/blog/hreflang-guide">
<link rel="alternate" hreflang="en" href="https://seoaudit.com.ua/en/blog/hreflang-guide">
<link rel="alternate" hreflang="es" href="https://seoaudit.com.ua/es/blog/hreflang-guide">
<link rel="alternate" hreflang="x-default" href="https://seoaudit.com.ua/blog/hreflang-guide">

Ці самі чотири рядки повторюються без змін на українській, англійській та іспанській версіях сторінки. Українська адреса виступає і як uk, і як x-default, бо це мова за замовчуванням. Запис x-default призначений для користувачів, мову яких немає серед версій, або для сторінки вибору мови.

Якщо для якоїсь мови сторінки-перекладу немає, цю мову просто не включають у набір. Не потрібно вказувати адресу іншої мови «про запас» і не потрібно відправляти користувача на головну. Набір має описувати лише реально існуючі сторінки.

Поруч із цим зверніть увагу на атрибут lang в елементі html: він має збігатися з мовою сторінки, наприклад <html lang="uk">. Це окремий сигнал для браузерів, засобів доступності та пошукових систем, і він не замінює hreflang.

Коди мов і регіонів

Значення hreflang складається з коду мови за ISO 639-1 і, за потреби, коду регіону за ISO 3166-1 alpha-2. Регіон без мови вказувати не можна. Ось що трапляється на практиці:

  • uk для української. Код ua позначає країну Україна, а не мову, тому він хибний. Скануючі інструменти, зокрема сканер на цьому сайті, прямо відхиляють ua на користь uk.
  • en для англійської загалом, en-GB для Великої Британії, en-US для США. Запис en-UK хибний, бо код країни Великої Британії в ISO 3166-1 це GB.
  • es для іспанської загалом, es-MX для Мексики, es-ES для Іспанії.
  • x-default не мова, а спеціальне значення для запасної версії.

Регіональні варіанти потрібні лише тоді, коли тексти справді відрізняються: валютою, правовими умовами, лексикою. Якщо у вас один іспанський переклад для всіх країн, достатньо es. Додавання регіонів «для повноти» тільки збільшує кількість місць, де можна помилитися.

Також не змішуйте різні значення для однієї мови на тій самій сторінці: два записи en, що ведуть на різні адреси, створюють конфлікт, і Google обере одну з них довільно.

Три способи оголосити hreflang

Google підтримує три способи, і в документації радять обрати один.

Елементи link у head

Найпростіший варіант для звичайних сайтів і блогів. Теги віддаються в HTML кожної сторінки, їх видно через «Переглянути код сторінки». Недолік: при великій кількості мов розмір head зростає.

HTTP-заголовок

Підходить для файлів, які не є HTML, наприклад PDF. Значення передається в заголовку Link відповіді сервера. Для звичайних сторінок цей спосіб використовують рідко, бо його важче помітити під час перевірки.

Карта сайту

В XML-карті сайту для кожного url додають елементи xhtml:link з усіма версіями. Це зручно для великих сайтів, бо розмітка зосереджена в одному місці. Докладніше про формат читайте в посібнику зі sitemap.xml.

Головна порада: не комбінуйте способи без потреби. Якщо в HTML одна група, а в карті сайту інша, виникає суперечність, і результат важко передбачити. Один спосіб, одне джерело правди, і всі версії генеруються з тих самих даних.

Найчастіші помилки hreflang

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

ПомилкаЩо відбувається
Хибний код, наприклад ua або en-UKЗначення не розпізнається, запис ігнорується
Немає посилання на саму сторінкуГрупа неповна, її складніше інтерпретувати
Немає зворотного посиланняЯкщо A вказує на B, а B не вказує на A, позначки можуть бути проігноровані
Адреса веде на редирект або 404Пошукова система не може використати версію
Адреса не є canonicalСигнали суперечать один одному
hreflang на сторінці з noindexСторінку не буде в індексі, тож позначка не має сенсу
Відносні адреси на кшталт /en/pageПотрібні абсолютні адреси з https і доменом
Змішані способи, різні набори в HTML і картіКонфлікт між джерелами
Частковий набір, у якому бракує однієї мовиДеякі версії залишаються поза групою
Перекладено title, а текст залишився мовою оригіналуВерсія не відповідає заявленій мові

Остання помилка підступна: технічно все гаразд, але користувач, який відкрив «англійську» сторінку, бачить український текст. Hreflang не виправляє змістових проблем, тож позначайте тільки ті версії, які справді повністю перекладені.

Ще одна пастка: автоматичне перенаправлення за IP або заголовком Accept-Language. Якщо сервер змушує відвідувача й краулер переходити на «правильну» мову, пошукова система може ніколи не побачити інші версії. Дайте відвідувачеві вибір мови посиланням, а не примусом.

Як hreflang взаємодіє з canonical, noindex і редиректами

Три механізми часто конфліктують, тому розглянемо їх разом.

Canonical. Кожна мовна версія має вказувати canonical на саму себе. Якщо англійська сторінка має rel="canonical" на українську, ви говорите Google, що англійської версії як окремої немає, а hreflang на неї суперечить цьому. Не канонізуйте одну мову на іншу. Подробиці про вибір canonical є в посібнику з тегу canonical.

Noindex. Сторінка з noindex не потрапляє в індекс, тож посилатися на неї в hreflang безглуздо. Якщо переклад ще не готовий і закритий від індексації, прибирайте його з набору, поки він не з'явиться.

Редиректи. Адреса в hreflang має відповідати кодом 200 безпосередньо. Якщо, наприклад, /en/page перенаправляє на /en/page/, у набір потрібно вписувати кінцеву адресу. Це легко пропустити після зміни структури URL.

Robots.txt. Заборонена для обходу сторінка не може бути перевірена, а отже, зворотне посилання на ній не буде прочитане. Переконайтеся, що жодна мовна версія не потрапляє під правила robots.txt.

Загальний принцип простий: усі адреси в групі мають бути доступними, індексованими, самоканонічними й відповідати кодом 200. Решта помилок зазвичай випливає з порушення цього правила.

Як перевірити hreflang вручну

Для невеликого сайту вистачає браузера й терміналу.

  1. Відкрийте кожну мовну версію й перегляньте код сторінки. Знайдіть усі hreflang у head і порівняйте набори: вони мають бути однаковими на всіх версіях.
  2. Швидко витягніть теги з терміналу:
curl -s https://example.com/en/page | grep -i hreflang
  1. Для кожної адреси з набору перевірте код відповіді й відсутність редиректу, наприклад командою curl -sI.
  2. Перегляньте rel="canonical" і мета-тег robots на кожній версії.
  3. Якщо hreflang задано в карті сайту, відкрийте її й перевірте, що кожен url містить усі версії, включно з собою.
  4. У Google Search Console використайте перевірку URL: вона показує, яку сторінку Google обрав каноничною і чи проіндексовано версію.

Для сайту з десятками мов або тисячами сторінок ручна перевірка не масштабується, тому набір краще генерувати з одного джерела даних і перевіряти автоматично. Повний перелік перевірок технічного SEO зібрано в чеклісті технічного SEO.

Що перевіряє сканер SEOAudit

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

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

Якщо на сторінці немає hreflang, перевірка позначається як незастосовна, а не як пройдена. Сканер також не перевіряє hreflang у карті сайту чи в HTTP-заголовках понад те, що оголошує сама сторінка, і не обходить весь сайт.

Щоб побачити результат на власній сторінці, запустіть безкоштовний сканер. Повніший огляд технічних перевірок є на сторінці SEO-аудиту, а пов'язані перевірки HTTPS і заголовків безпеки описано на сторінці перевірки безпеки. Якщо вас цікавить і видимість для ШІ-пошуку, дивіться ШІ-видимість.

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

Часті запитання

Чи впливає hreflang на позиції сторінки?

Ні, hreflang не підвищує позиції. Він лише підказує Google, яку мовну або регіональну версію показати користувачеві. Помилки в ньому не штрафують сайт, але знижують шанс, що людина побачить сторінку своєю мовою.

Який код використовувати для української: uk чи ua?

Використовуйте uk. Це код мови за ISO 639-1. Код ua позначає країну Україна, тому в hreflang він хибний. Регіон можна додати тільки після мови, наприклад uk-UA, але зазвичай вистачає самого uk.

Чи потрібен x-default, якщо в мене лише дві мови?

Він не обов'язковий, але рекомендований. Запис x-default вказує запасну версію для користувачів, чию мову ви не підтримуєте, або сторінку вибору мови. Зазвичай це версія мови за замовчуванням.

Що робити, якщо переклад сторінки ще не готовий?

Не вказуйте його в наборі hreflang і не створюйте порожню сторінку. Залиште в групі лише наявні версії. Коли переклад з'явиться, додайте його на всі сторінки групи одночасно, щоб зворотні посилання збігалися.

  • Технічне SEO

    8 хв читання

    Що перевіряти в SEO-аудиті сайту: чекліст технічного SEO

    Технічний SEO-аудит зручніше проходити за порядком: чи сторінку можна просканувати, проіндексувати, зрозуміти, чи вона достатньо швидка і безпечна. Нижче чекліст з поясненнями і пріоритетами.

    Читати статтю

  • Технічне SEO

    8 хв читання

    Як налаштувати robots.txt: синтаксис, приклади та типові помилки

    Файл robots.txt керує скануванням, а не індексацією, і саме на цьому плутанні сайти втрачають сторінки. Розбираємо синтаксис, правила збігу, приклади, перевірку та типові помилки запуску.

    Читати статтю

  • Технічне SEO

    7 хв читання

    Sitemap.xml: що додавати, типові помилки та як перевірити файл

    Sitemap підказує пошуковим системам, які адреси варто знайти. Файл простий, доки в ньому не опиняються редиректи, сторінки з noindex або чужий хост. Розбираємо вимоги, помилки та перевірку.

    Читати статтю

Потрібен аудит безпеки?

Наші експерти готові допомогти. Вебаудит, інфраструктура, відповідність NIS2...