Багатомовна SEO-архітектура: Hreflang, Канонічні URL та Стратегія URL

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

DFКоманда DigiForgeJun 20, 20269 хв читання
Абстрактна цифрова мережа, що нагадує земну кулю, з яскравими іскристими з'єднаннями на темно-вугільному фоні

Коли вебсайт надає контент кількома мовами або орієнтується на кілька країн, архітектура стає вирішальним фактором для видимості в пошуку. Ми бачили, як клієнти втрачали місяці позицій у рейтингу через те, що плутали *багатомовне* та *багатонаціональне* SEO, або через те, що впроваджували hreflang як запізнілу думку. У DigiForge ми розглядаємо міжнародну архітектуру як фундаментальний шар — нарівні з хостингом і HTTPS. У цій статті ми розглянемо три стовпи цього фундаменту: стратегію URL, реалізацію hreflang та управління канонічними тегами. Також торкнемося робочих процесів команди, оскільки навіть найкраща технічна настройка руйнується без хорошої координації.

Багатомовне vs. Багатонаціональне: знайте різницю

Перш ніж заглиблюватися в технічні рішення, важливо розрізняти багатомовне та багатонаціональне SEO. Як пояснює Search Engine Land, багатомовне SEO зосереджується на наданні контенту різними мовами, часто користувачам у кількох країнах, які розмовляють однією мовою. Багатонаціональне SEO, з іншого боку, націлене на різні країни з контентом, який може бути тією ж мовою, але адаптований до місцевих уподобань, нормативів або валют. Багатомовний сайт може використовувати одну структуру URL для всіх франкомовних, тоді як багатонаціональному сайту можуть знадобитися окремі версії для Франції, Канади та Швейцарії — навіть якщо мова однакова. Розуміння цієї відмінності формує вашу модель URL та стратегію hreflang з самого початку.

Стратегія URL: піддомени, підкаталоги та національні домени верхнього рівня

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

Національні домени верхнього рівня (ccTLD)

ccTLD, як-от example.fr або example.de, надсилає найсильніший сигнал геотаргетингу. Пошукові системи асоціюють домен з цією країною, і користувачі інстинктивно довіряють йому. Недолік — операційна складність: кожен ccTLD є окремим доменом, тому потрібні окремі SSL-сертифікати, окремі конфігурації хостингу, і посилальна вага не передається між ними. Для бізнесу, який запускається лише на двох-трьох ринках, це може бути прийнятно. Для тридцяти ринків це стає кошмаром для підтримки. Більше того, якщо ваш контент однаковий на всіх ccTLD (наприклад, глобальний брендовий сайт), ви розпорошуєте авторитет і змушуєте краулерів відкривати кожен домен незалежно.

Піддомени

Шаблон піддомену, як-от fr.example.com, легше адмініструвати, ніж національні домени верхнього рівня (ccTLD), але все одно розділяє сайт з точки зору пошукового робота. Google розглядає піддомени як окремі сутності, тому посилальна вага з основного домену не передається автоматично на піддомен. Також потрібно налаштовувати окремі аналітичні властивості та можна зіткнутися з проблемами області дії файлів cookie. Тим не менш, піддомени можуть бути корисними для мовних варіантів, які кардинально відрізняються за вмістом або належать різним командам — наприклад, якщо ваша німецька команда працює автономно та використовує власний технологічний стек. Але для більшості проєктів ми вважаємо, що піддомени створюють непотрібні труднощі.

Підкаталоги (або підпапки)

Наша стандартна рекомендація в DigiForge — це підхід з підкаталогами: example.com/fr/ або example.com/de/. Весь вміст знаходиться під одним кореневим доменом, тому посилальна вага накопичується природним чином, аналітика консолідована, а SSL — це один сертифікат. Google також використовує шлях підкаталогу як сигнал геотаргетингу в поєднанні з hreflang та мета-тегами. Основний ризик полягає в тому, що погано структуроване дерево підкаталогів може розмити тематичний авторитет кореневого домену, але на практиці це трапляється рідко, якщо тримати мовні папки в порядку та використовувати правильне внутрішнє посилання. Добре організована структура підкаталогів також спрощує міжнародне розширення — додавання нової мови зводиться до створення нової папки з власними анотаціями hreflang.

Універсальної відповіді не існує. Якщо ви націлюєтеся лише на Японію з доменом .jp, ccTLD може бути вартий додаткових зусиль. Але якщо ви обслуговуєте франкомовних користувачів у Канаді, Швейцарії та Франції, одна папка /fr/ з анотаціями hreflang для кожного регіону буде ефективнішою, ніж три окремі домени. Ключове — узгодити бізнес-цілі з технічною моделлю на ранньому етапі та задокументувати рішення.

Реалізація Hreflang: найскладніша частина

Hreflang повідомляє пошуковим системам, яку мовну або регіональну версію сторінки показувати в певному регіоні. Відомо, що його дуже легко реалізувати неправильно. Найпоширеніша помилка — використання hreflang як заміни канонічних тегів (вони служать різним цілям) або пропуск самопосилальних записів hreflang. Інша часта помилка — невідповідність кодів мови та регіону: наприклад, використання en-uk замість en-GB. Ці помилки часто залишаються непоміченими, доки не впаде трафік.

Синтаксис і розміщення

У вас є три варіанти вказівки анотацій hreflang: у HTML <head> як елементи <link>, у HTTP-заголовку (для не-HTML файлів, як-от PDF) або в XML-карті сайту. Ми наполегливо рекомендуємо метод карти сайту для сайтів з більш ніж кількома мовними варіантами, оскільки це дозволяє тримати розмітку поза HTML і спрощує аудит. Який би метод ви не обрали, кожна мовна версія повинна містити посилання на себе та на всі інші версії. Це включає сторінку за замовчуванням або резервну, яка повинна використовувати x-default. Ніколи не пропускайте самопосилальне посилання — пошукові системи покладаються на взаємний характер hreflang для підтвердження зв'язку. Без нього вони можуть повністю ігнорувати анотацію.

<url>
  <loc>https://example.com/en/</loc>
  <xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/" />
  <xhtml:link rel="alternate" hreflang="fr" href="https://example.com/fr/" />
  <xhtml:link rel="alternate" hreflang="de" href="https://example.com/de/" />
  <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/en/" />
</url>

Поширена помилка: пропуск самореферентного посилання. Пошукові системи покладаються на взаємність анотацій hreflang для підтвердження зв'язку. Без цього вони можуть проігнорувати всю анотацію. Завжди додавайте посилання з кожної сторінки на саму себе.

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

Використовуйте коди мов ISO 639-1 (наприклад, en, fr) і, за потреби, коди регіонів ISO 3166-1 alpha-2 (наприклад, en-GB, fr-CA). Код регіону необов'язковий, але критичний, коли одна мова відрізняється залежно від країни — наприклад, en-US проти en-GB. Ніколи не вгадуйте коди; перевіряйте їх. Навіть маленька помилка (наприклад, en-gb малими літерами) може зламати анотацію. Також зауважте, що x-default необхідний для сторінок, які не прив'язані до конкретної мови, наприклад, заставної сторінки. Без нього користувачі можуть побачити не ту мовну версію.

Робота з майже ідентичним вмістом

Коли вміст по суті однаковий різними мовами (наприклад, сторінка глобального бренду зі зміною лише мови), достатньо лише hreflang — окремі канонічні теги для кожного варіанту не потрібні. Але якщо у вас є сторінка англійською та сторінка французькою, які охоплюють ту саму тему, але написані незалежно, кожна сторінка повинна мати самореферентний канонічний тег, що вказує на власну URL-адресу, а hreflang має зв'язувати їх як альтернативи. Канонічний тег і hreflang співіснують; один не скасовує інший. Поширена помилка — вважати, що hreflang має на увазі канонічний зв'язок — це не так. Вони є ортогональними сигналами.

Канонічні теги для різних мов: тонкий баланс

Канонічний тег вказує пошуковим системам, яка версія сторінки є основною за наявності дублікатів. У багатомовному контексті часто виникає плутанина: деякі команди встановлюють канонічний тег для всіх мовних варіантів на URL-адресу мови за замовчуванням. Це майже завжди неправильно. Це говорить Google, що французька сторінка є дублікатом англійської і не повинна індексуватися. Результат: ваш французький трафік зникає. Ми проводили аудит сайтів, де цілі мовні розділи були вилучені з індексу через цю єдину помилку.

Правильний підхід — встановлювати канонічне посилання для кожної мовної версії на саму себе. Якщо у вас справді ідентичний вміст (наприклад, описи продуктів, які ви машинно перекладаєте без змін), ви можете використовувати hreflang, щоб вказати, що вони є альтернативами, але канонічне посилання все одно має посилатися на себе. Пошукові системи розуміють, що сторінки, пов'язані через hreflang, не є дублікатами; це мовні варіанти для різних аудиторій. Існує один легітимний виняток: синдикований вміст. Якщо ви публікуєте ту саму статтю англійською на своєму основному сайті та іспанською на сайті партнера, ви можете використовувати англійську URL-адресу як канонічну для іспанської сторінки, але лише за умови, що ви *не* використовуєте hreflang. Поєднання міжмовного канонічного посилання з hreflang надсилає суперечливі сигнали. На практиці ми радимо клієнтам уникати цієї ситуації взагалі та створювати унікальний вміст для кожної мови.

У DigiForge ми одного разу проводили аудит сайту, де вся німецька секція мала rel="canonical", що вказував на англійський еквівалент. Німецькі сторінки або не індексувалися, або мали низькі позиції. Виправлення канонічних посилань на самореференцію разом із правильним hreflang повернуло німецькі сторінки до індексу протягом кількох тижнів.

Робочі процеси команди: підтримка архітектури в актуальному стані

Технічна архітектура — це лише половина справи. Координація між командами на різних ринках часто визначає, чи переживе впровадження редизайн. Search Engine Journal описує практичні кроки для сприяння співпраці: почніть з малого — спільного Slack-каналу або внутрішньої папки, де члени команди діляться порадами та ідеями. З часом переходьте до щоквартальних сесій обміну знаннями або регіональних воркшопів.

Ми виявили, що документування найкращих практик SEO — особливо правил hreflang та канонічних посилань — у живому посібнику, який супроводжує проект, є надзвичайно важливим. Занадто багато міжнародних сайтів ламаються через те, що розробник на одному ринку додає нову мовну папку, не оновлюючи анотації hreflang у XML-мапі сайту. Наявність єдиного джерела істини (спільного документа або файлу конфігурації в системі контролю версій) значно зменшує кількість таких помилок. Крім того, ми рекомендуємо створити центральний посібник із SEO, доступний для всіх ринків, з прикладами правильної розмітки. Використовуйте спільний індекс мап сайту, що включає всі мовні версії, оновлюваний через CI/CD. Налаштуйте автоматизовані тести, які перевіряють взаємність hreflang та самореференцію канонічних посилань. Нарешті, проводьте щомісячні синхронізації між командами технічного SEO та локалізації, щоб вчасно виявляти відхилення.

Автоматизація — ваш друг. Ми часто пишемо скрипти, які обходять мапу сайту та перевіряють, чи кожна анотація hreflang є взаємною. Простий Python-скрипт з використанням lxml може виявити відсутні самореференції або неправильні коди регіонів. Інтегруйте ці перевірки у ваш конвеєр розгортання, щоб неправильно налаштована мапа сайту ніколи не потрапляла в продакшн.

import requests
from lxml import etree

# Example check: verify hreflang reciprocity
sitemap_url = 'https://example.com/sitemap.xml'
response = requests.get(sitemap_url)
root = etree.fromstring(response.content)
ns = {'xhtml': 'http://www.w3.org/1999/xhtml'}

urls = {}
for url in root.findall('{http://www.sitemaps.org/schemas/sitemap/0.9}url'):
    loc = url.find('{http://www.sitemaps.org/schemas/sitemap/0.9}loc').text
    alternates = url.findall('xhtml:link', ns)
    for alt in alternates:
        hreflang = alt.get('hreflang')
        href = alt.get('href')
        if href == loc and hreflang:
            # self-reference found
            pass
        else:
            # check if href reciprocates
            pass
# More robust logic needed in practice

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

Мережа взаємопов'язаних вузлів, що символізують багатомовні hreflang-з'єднання на темному фоні
Автоматизована валідація hreflang-кластерів гарантує правильне з'єднання кожного мовного вузла.

Зведення воєдино: стратегічна структура

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

Ось короткий контрольний список, який ми використовуємо в DigiForge під час планування багатомовної архітектури:

  • Визначте цільову аудиторію: за мовою, за країною чи обома критеріями?
  • Оберіть модель URL (ccTLD, піддомен або підкаталог) і задокументуйте обґрунтування.
  • Налаштуйте hreflang у sitemaps, включаючи x-default та самостійні посилання.
  • Переконайтеся, що кожна мовна сторінка має самостійне канонічне посилання.
  • Створіть спільний посібник з SEO-стилю та процес розповсюдження.
  • Впровадьте автоматизовану валідацію в CI/CD конвеєрі.
  • Відстежуйте покриття індексації в Google Search Console для кожної мови.

Результат — сайт, який пошукові системи розуміють без двозначностей: користувач у Квебеку отримує версію fr-CA, користувач у Берліні — версію de, а всі інші бачать x-default. Такий рівень точності — не розкіш, а різниця між глобальною конкуренцією та міжнародною невидимістю.

Якщо ви плануєте міжнародне розширення або потребуєте розплутати застарілу багатомовну структуру, зв'яжіться з DigiForge. Ми створили та перевірили достатньо таких архітектур, щоб знати, які скорочення працюють, а які призводять до проблем.

#hreflang#багатомовне-seo#канонічний#стратегія-url#міжнародне-seo#архітектура-сайту
DF

Команда DigiForge

Інженерна команда DigiForge — створюємо сучасні вебсайти, модулі та автоматизацію, а також пишемо про мистецтво випуску швидких та надійних вебпродуктів.

Обговорімо

Маєте проєкт
на думці?

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

Розпочати проєкт