Технічне SEO

Багатомовний сайт, який усіх веде в одну мову

Мовні версії можуть існувати, мати hreflang і перемикач — і при цьому кожне внутрішнє посилання повертає читача в основну мову. Розбір власної помилки з цифрами до і після та спосіб перевірити це в себе.

2 вересня 2026 р.
7 хв читання

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

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

Як це бачить читач

Візьмімо російську сторінку послуги. Угорі стандартні хлібні крихти:

Главная  →  Razrabotka  →  Internet magaziny  →  сторінка

Два дефекти в трьох словах. По-перше, назва зібрана з латинського сегмента адреси замість слова «Разработка» — виглядає як машинний недогляд, і це саме він. По-друге, і це гірше, посилання веде на адресу без мовного префікса. Такої сторінки не існує: сервер віддає 404.

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

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

Чому цього роками не видно

Тут працює одразу три речі.

Ніщо не ламається. Посилання на чужу мову — це робоче посилання. Сторінка відкривається, віддає 200, виглядає нормально. Моніторинг мовчить, помилок у консолі немає, автотест на биті посилання проходить.

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

Аналітика показує норму. Люди ходять по сайту, сторінки переглядаються. Те, що російськомовний відвідувач за два кліки опинився в українському розділі, у звітах не позначається ніяк — це той самий сайт, ті самі перегляди.

П'ять причин одного симптому

Що саме ми знайшли, коли пішли по коду.

Крихти брали сегменти з адреси як є. На сторінці /ru/razrabotka/... перший сегмент — razrabotka, і код чесно будував із нього посилання /razrabotka. Українська адреса — /rozrobka, тому виходило 404. Той самий рядок ішов у назву кнопки: мапа перекладів ключована українськими слагами, razrabotka там не знаходився, і назва збиралася зі слага з великої літери.

Дерево послуг перекладало адресу, але не додавало префікс. Тут було майже правильно: слаг перекладався, internet-magaziny замість internet-magazyny. Не вистачало /ru на початку — і посилання йшло на редирект замість цільової сторінки.

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

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

Автоматична підсвітка термінів була одномовною. Механізм, який знаходить у тексті назви технологій і робить із них посилання, зберігає українські адреси цілей. На російській сторінці слово «OpenCart» вело в український розділ.

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

Що це означає для пошуку

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

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

Друга частина ціни — обхід. Посилання на адресу, що редиректить, з'їдає запит робота даремно. Посилання в 404 — тим паче. На сайті з двома-трьома сторінками це не має значення. На кількох сотнях це вже помітна частка обходу, витрачена ні на що.

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

Як перевірити це в себе за пів години

Метод, який спрацював у нас, свідомо примітивний: він дивиться на готовий HTML і нічого не знає про наміри коду. Саме тому він тричі показав нам, що «виправлено» насправді означало «майже».

Берете адресу з мовним префіксом і рахуєте посилання, у яких цього префікса немає:

curl -s https://ваш-сайт.com/ru/якась-сторінка \
  | grep -o 'href="/[^"]*"' \
  | grep -v 'href="/ru' \
  | sort -u

У виводі буде три види адрес.

Перший — те, що там і має бути: перемикач мов, файли, зовнішні ресурси. Перемикач мов зобов'язаний вести на інші мови, це його робота. Ми на цьому спіткнулися: перший прогін показав дефекти на всіх типах сторінок, і половина «дефектів» виявилась перемикачем. Відрізняти його треба за атрибутом hreflang у тому ж тезі.

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

Третій — власне дефекти.

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

Окремо перевірте крихти — це найдешевша перевірка з усіх:

curl -s -o /dev/null -w "%{http_code}\n" https://ваш-сайт.com/адреса-з-крихти

І hreflang — кожна оголошена адреса має віддавати 200, а не 301 чи 308:

curl -s https://ваш-сайт.com/сторінка | grep -o 'hreflang="[^"]*" href="[^"]*"'

Що вийшло

До початку роботи: 224 різні адреси, на які вели посилання з мовних версій у чужу мову. Після: сім, і всі сім — ті самі форми без перекладу.

Одинадцять типів сторінок із тринадцяти стали повністю чистими. Крихти віддають 200 замість 404 і пишуться словами мови сторінки. hreflang веде на кінцеві адреси.

Цифри навмисно про роботу, а не про результат. Що з цього вийде в пошуку — буде видно за кілька тижнів у Search Console, і саме там ми будемо дивитися. Обіцяти зростання під таку правку не можна: вона прибирає втрату, а не додає попиту.

Чесні межі

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

Це також не дає нічого одномовному сайту. І не замінює перекладу: сторінка, яка з'єднана правильно, але написана чужою мовою, лишається чужою.

І головне, чого ця перевірка не робить: вона не пояснює, чому дефект з'явився. У нас п'ять причин лежали в п'яти різних файлах, написаних у різний час різними руками. Знайти їх допоміг не аудит коду, а тупий перебір готового HTML — і саме його ми лишили в проєкті як постійну перевірку після кожної зміни в навігації.

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

Теги

SEO

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

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

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

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

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

https://lionex.com.ua/blog/bagatomovnyj-sajt-vnutrishni-posylannya

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

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

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

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

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

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

Лишати як є, посиланням на оригінальну мову. Додати мовний префікс до сторінки, якої не існує, означає відправити людину в 404 — це гірше за посилання на іншу мову. У нас таких лишилося сім, і це свідоме рішення, а не недогляд.

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

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

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

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

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

Схожі статті

Всі статті
Волатильність видачі: як відрізнити апдейт Google від власної поломки
Технічне SEO

Волатильність видачі: як відрізнити апдейт Google від власної поломки

Добові покази нашого сайту за серпень стрибали від 55 до 579, а тижневі суми росли рівно: 421 → 858 → 2 127 → 2 250. Розбір власних даних і метод із п'яти кроків, яким ми відділяємо коливання пошуку від помилки на сайті.

8 хв
4 вер.
Читати далі
Картка товару очима Google: що ми побачили в 30 магазинах
Технічне SEO

Картка товару очима Google: що ми побачили в 30 магазинах

8 серпня 2026 ми відкрили товарні сторінки тридцяти живих магазинів і подивились на них не як покупець, а як пошуковий робот. Розмітка Product знайшлась у десяти, характеристики — у чотирьох. Розбір того, що з цього випливає.

7 хв
2 вер.
Читати далі
Технічна база ринку: що ми знайшли у 39 магазинах
Технічне SEO

Технічна база ринку: що ми знайшли у 39 магазинах

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

8 хв
2 вер.
Читати далі