Технічне SEO

hreflang, який ламає мовні версії: п'ять способів зробити двомовний сайт одномовним

Сайт має дві мовні версії, перемикач працює, hreflang оголошено — і при цьому пошуковик бачить лише одну мову. Розбираємо п'ять реальних конфігурацій, у яких мовна розмітка формально є, а працює проти сайту.

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

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

Нижче — п'ять реальних конфігурацій, які ми зустрічали в замірах українських сайтів.

1. hreflang заведено двічі, і два набори суперечать один одному

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

Перший набір оголошував ru-ru, uk-ua і pl, ведучи на кореневі адреси. Другий — ru, x-default і uk, ведучи на адреси з префіксом /ua/. При цьому за посиланням, оголошеним як uk-ua, віддавався російський контент, і те саме за польським.

Для пошуковика це не «дві думки», а суперечність, яку він розв'язує на власний розсуд — тобто найчастіше ігнорує обидва набори.

2. Код мови вказано неправильно

На магазині військового спорядження мовні версії реально існували — коренева й /ua/. У розмітці вони були оголошені як uk-UA і uk-RU.

Другий код не означає «російська для України»: перша частина — це мова, друга — регіон. uk-RU читається як «українська мова, регіон Росія». Правильний код для російськомовної версії українського сайту — ru-UA.

Додатковий штрих на тому ж сайті: <html lang="ru"> на кореневій версії, тобто атрибут мови сторінки суперечив тому, що оголошував hreflang.

Окремий різновид цієї помилки трапився у вибірці будівельних компаній: той самий код мови оголошено двічі — один сайт із восьми перевірених 8 серпня 2026 року.

3. Карта сайту містить лише одну мовну версію

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

З реальних замірів:

  • магазин спецій: усі 590 унікальних адрес карти ведуть на російську версію, хоча в коді <html lang="uk"> і hreflang для української оголошено;
  • магазин інструменту: 100% адрес у карті — російськомовні, при тому що сайт за замовчуванням віддає українську;
  • магазин садової техніки: у карті лише україномовна гілка, російська версія заявлена в hreflang, але в карту не потрапила;
  • гуртовий магазин косметики: жодної російськомовної адреси в карті при повноцінній двомовності з перемикачем.

Закономірності в тому, яка саме мова «зникає», немає — і це найкращий доказ, що причина технічна, а не змістова: так налаштувався генератор карти, і ніхто не перевірив результат.

4. Переклад інтерфейсу без перекладу метатегів

Тонший випадок. Мовна версія існує, інтерфейс перекладено, <html lang="uk"> виставлено правильно — а <title> і meta description лишились мовою оригіналу.

Ми бачили це на магазині білизни: україномовна версія /ua мала перекладений інтерфейс і правильний атрибут мови, але метатеги на ній залишились російськими. Для пошуковика така сторінка виглядає як дублікат — саме за метатегами він насамперед і розрізняє сторінки.

Це класична помилка часткової локалізації: перекладають те, що видно в макеті, і не перекладають те, що видно лише у видачі.

5. hreflang є, а другої версії немає

Зворотний випадок: розмітка оголошує мовні версії, яких фізично не існує, — залишок від планів чи від шаблону. Пошуковик іде за посиланням, отримує 404 або редирект на ту саму сторінку, і перестає довіряти всій групі.

Окремий варіант — hreflang лише з одним записом на самого себе плюс x-default. Формально не помилка, практично — розмітка, яка не робить нічого: група з однієї сторінки ні з чим її не пов'язує.

Як перевірити свій сайт

  1. Відкрийте головну українською й подивіться код: знайдіть усі рядки з hreflang. Їх має бути стільки, скільки у вас мовних версій, плюс, за потреби, x-default.
  2. Перевірте коди мов: uk-UA для української, ru-UA для російськомовної версії українського сайту. Кожен код має траплятися рівно один раз.
  3. Відкрийте кожне посилання з hreflang і переконайтесь, що за ним відкривається саме та мова, яка оголошена, і що сторінка віддає 200, а не редирект.
  4. Перевірте зворотність: на сторінці, куди веде hreflang, має бути посилання назад на першу. Односторонні оголошення пошуковик не враховує.
  5. Порівняйте <html lang> із тим, що оголошує hreflang, — вони мають збігатися.
  6. Перевірте карту сайту: чи є в ній адреси обох мовних версій.
  7. Перевірте <title> і meta description на другій мовній версії — вони мають бути перекладені, а не успадковані.

Скільки це роботи

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

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

Межі цих даних

Цифри — це заміри на конкретні дати (серпень 2026 року), назв сайтів ми свідомо не наводимо. Ринкова вибірка будівельних компаній, з якої взято приклад із подвоєним кодом мови, складалася з восьми сайтів — тож частка «1 із 8» характеризує саме ці сайти, а не ринок.

Теги

SEO

Вам сподобалась стаття?

Ваша думка допомагає нам створювати кращий контент

Поділіться з друзями

Знайшли щось корисне?

Допоможіть іншим дізнатись про це — поділіться статтею в соціальних мережах

Дякуємо, що допомагаєте нам рости

Засновник LIONEX

Владислав Чистяков

Пише про те, що робить руками: інтернет-магазини на OpenCart, застосунки на Next.js, інтеграції та швидкість сайтів. У статтях — заміри й перевірки, які читач може повторити на своєму проєкті, а не загальні поради. Комерційна розробка з 2015 року.

Питання

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

Відповіді на популярні питання по темі

Який правильний код hreflang для російськомовної версії українського сайту?

ru-UA: перша частина — мова, друга — регіон. Код uk-RU, який ми зустрічали на одному із замірених сайтів, читається як «українська мова, регіон Росія» — це не те, що мали на увазі.

Чи може hreflang бути оголошений двічі?

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

Чому друга мовна версія не потрапляє в індекс, якщо hreflang правильний?

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

Чи достатньо перекласти інтерфейс, щоб мовна версія працювала?

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

Що таке зворотність hreflang і навіщо вона?

Якщо сторінка A оголошує сторінку B своєю мовною версією, сторінка B має оголошувати A так само. Односторонні оголошення пошуковик не враховує — група вважається неповною.

Отримуйте найкращі статті на пошту

Підпишіться на нашу розсилку та отримуйте корисні поради, інсайти та новини про веб-розробку, маркетинг та бізнес.

Ми поважаємо вашу приватність. Відписатись можна в будь-який момент.

Далі в блозі

Схожі статті

Одна літера в адресі: 76 перейменованих сторінок і шість днів 404Технічне SEO

Одна літера в адресі: 76 перейменованих сторінок і шість днів 404

19 серпня 2026 року ми перегенерували 76 російських адрес, бо в межах одного шляху співіснували дві транслітерації, — і майже шість днів старі адреси відповідали 404, бо механізм переїзду шукав сторінку лише за українським slug'ом. Через п'ять тижнів 12 старих адрес досі у видачі, а на юридичній сторінці сума за місяць і тижневі дані кажуть різне. Розповідаємо, чого з цього не випливає і як перевірити свій сайт.

Читати далі
Ми втратили власний магазин разом із доменом: що про це знає веб-архівТехнічне SEO

Ми втратили власний магазин разом із доменом: що про це знає веб-архів

17 вересня 2026 ми перерахували за веб-архівом, як виглядала втрата власного магазину разом із доменом: 2 378 знімків головної в березні 2022, перший 301 першого квітня, останній знімок нашого вмісту 18 травня. Показуємо, що з архіву відновлюється, а що ні.

Читати далі
IndexNow відповідав 200, а сторінок не подано: 6 файлів замість 867 адресТехнічне SEO

IndexNow відповідав 200, а сторінок не подано: 6 файлів замість 867 адрес

З 2 серпня до 3 вересня 2026 наш скрипт IndexNow подавав у Bing шість адрес файлів карти сайту замість сторінок, і на кожну подачу приходило «успішно». Розбираємо, чому код 200 нічого не довів і як за 15 хвилин перевірити, що саме подає ваш модуль.

Читати далі