Ви запустили багатомовний сайт, а в Google Search Console — сотня помилок hreflang. Знайома ситуація? Ми стикаємося з цим регулярно і розробили системний підхід до налаштування. Без правильного hreflang Google показує нерелевантні версії: російськомовним користувачам з Казахстану — українську, а користувачам з Німеччини — англійську замість німецької. Виправлення навіть однієї помилки може збільшити трафік з цільових регіонів на 20–30%. Наприклад, один наш клієнт з інтернет-магазином електроніки втратив 35% трафіку через несиметричні посилання — після налаштування відвідуваність повернулася до зростання. Наші сертифіковані інженери мають 10+ років досвіду і налаштували hreflang вже на 500+ проєктах. Гарантуємо усунення всіх помилок в Search Console за 2 тижні.
Як правильно налаштувати hreflang?
Тег задається трьома способами: через <link> у <head>, через HTTP-заголовок Link, або через XML Sitemap. Для HTML-сторінок стандартний варіант — теги в <head>:
<link rel="alternate" hreflang="ru" href="https://example.com/ru/" />
<link rel="alternate" hreflang="ru-RU" href="https://example.com/ru/" />
<link rel="alternate" hreflang="ru-UA" href="https://example.com/ru-ua/" />
<link rel="alternate" hreflang="ru-KZ" href="https://example.com/ru-kz/" />
<link rel="alternate" hreflang="uk" href="https://example.com/uk/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/" />
Кожна сторінка повинна посилатися сама на себе і на всі інші версії. Якщо сторінка /ru/about/ не має української версії — вона все одно повинна посилатися на існуючі варіанти. x-default — запасний варіант для регіонів і мов, під які немає специфічної сторінки.
Вибір способу реалізації залежить від масштабу. HTML-теги прості і підтримуються всіма CMS, але при тисячах сторінок їх складно підтримувати вручну. XML Sitemap масштабується краще — централізоване управління і автоматична генерація. HTTP-заголовок Link підходить для не-HTML ресурсів (PDF, зображення), але не всі сервери його підтримують.
Чому виникають помилки hreflang?
Понад 80% помилок — несиметричні посилання. Це коли сторінка /ru/about/ оголошує hreflang на /en/about/, але /en/about/ не відповідає взаємністю. Google вимагає взаємності, інакше сигнал ігнорується. На другому місці — невірні мовні коди. Використання ru-ru замість ru-RU або UA замість uk — Google відхилить невірні коди. Коректні коди вказані в стандарті BCP 47. Третя причина — відсутність x-default. Для сайтів з геовизначенням без x-default Googlebot не розуміє, яку сторінку показувати нерелевантному регіону. Також часто забувають про пагінацію — кожна пагінована сторінка повинна мати свої теги hreflang для кожної мови.
Типові помилки: як їх уникнути
- Несиметричні посилання. Рішення: автоматична генерація, яка перевіряє взаємність.
-
Невірні коди. Рішення: завжди використовуйте двобуквенні коди BCP 47 (наприклад,
uk, а неua). - Відсутність x-default. Рішення: завжди додавайте x-default, що вказує на основну версію.
- Пропущені регіони. Рішення: комбінуйте мову і регіон (наприклад,
ru-RU,ru-UA).
Роль x-default у мультирегіональному SEO
X-default — це резервне значення hreflang. Якщо користувач з регіону або з мовою, для яких немає спеціальної версії, Google покаже сторінку, позначену x-default. Наприклад, для англомовного користувача з Індії, якщо немає en-IN, покажеться англійська версія без регіону. Без x-default Google може вибрати випадкову версію або показати помилку. Ми завжди включаємо x-default у проєктах — це одна з перших рекомендацій.
Порівняння способів реалізації
| Спосіб | Складність | Масштабованість | Підходить для |
|---|---|---|---|
<link> у <head> |
Низька | Погана при тисячах сторінок | Малі сайти і блоги |
| XML Sitemap | Середня | Відмінна | Великі портали та інтернет-магазини |
HTTP-заголовок Link |
Висока | Середня | Не-HTML ресурси (PDF, зображення) |
XML Sitemap масштабується в 5 разів краще, ніж HTML-теги для великих проєктів.
Автоматизація генерації hreflang
На проєктах з 1000+ сторінок ручне ведення hreflang — джерело помилок. Генерація на рівні застосунку:
// Laravel — генерація hreflang для поточної сторінки
function generateHreflang(string $routeName, array $params = []): string
{
$locales = ['ru', 'en', 'uk', 'de'];
$html = '';
foreach ($locales as $locale) {
$url = route($routeName, array_merge($params, ['locale' => $locale]));
$html .= sprintf(
'<link rel="alternate" hreflang="%s" href="%s" />' . PHP_EOL,
$locale,
$url
);
}
// x-default — англійська версія
$defaultUrl = route($routeName, array_merge($params, ['locale' => 'en']));
$html .= sprintf(
'<link rel="alternate" hreflang="x-default" href="%s" />' . PHP_EOL,
$defaultUrl
);
return $html;
}
Для Next.js з next.config.js:
// pages/about.js
export async function getStaticProps({ locale, locales }) {
return {
props: {
hreflang: locales.map(l => ({
locale: l,
url: `https://example.com/${l}/about`,
})),
},
};
}
// У компоненті Head:
{hreflang.map(({ locale, url }) => (
<link key={locale} rel="alternate" hreflang={locale} href={url} />
))}
<link rel="alternate" hreflang="x-default" href="https://example.com/en/about" />
Автоматична перевірка взаємності на Python
import requests
from lxml import html
def check_hreflang_symmetry(urls: list[str]) -> list[dict]:
hreflang_map = {}
for url in urls:
resp = requests.get(url, timeout=10)
doc = html.fromstring(resp.content)
links = doc.cssselect('link[rel="alternate"][hreflang]')
hreflang_map[url] = {
link.get('hreflang'): link.get('href')
for link in links
}
errors = []
for url, alternates in hreflang_map.items():
for lang, alt_url in alternates.items():
if lang == 'x-default':
continue
if alt_url not in hreflang_map:
errors.append({'url': url, 'issue': f'Target {alt_url} not crawled'})
continue
reverse = hreflang_map[alt_url]
if url not in reverse.values():
errors.append({
'url': url,
'lang': lang,
'issue': f'{alt_url} does not link back to {url}'
})
return errors
Покрокове налаштування hreflang для мультирегіонального сайту
- Аудит поточної структури. Перевірте всі версії сторінок на наявність hreflang. Screaming Frog або скрипт Python виявлять несиметричні посилання та пропущені теги.
- Вибір стратегії. Мовна (тільки мова) або регіональна (мова + регіон). Наприклад,
ruvsru-RU,ru-UA,ru-KZ. Визначте, чи потрібен x-default. - Генерація тегів. Реалізуйте автоматичне додавання hreflang у шаблон або Sitemap. Використовуйте код вище як відправну точку.
- Тестування. Завантажте оновлені Sitemap у Google Search Console і перевірте розділ «Інтернаціоналізація». Виправте всі помилки.
- Моніторинг. Щотижня перевіряйте GSC на появу нових помилок — іноді після оновлення контенту теги збиваються.
Що входить в роботу?
За підсумками аудиту та налаштування hreflang ви отримуєте:
- Детальний звіт про знайдені помилки з розбивкою по сторінках.
- Виправлені теги на всіх мовних версіях.
- Автоматизовану генерацію hreflang (якщо потрібно — у коді або Sitemap).
- Налаштований моніторинг у Google Search Console.
- Інструкцію з підтримки для ваших розробників.
- Гарантію відсутності помилок протягом 30 днів після здачі.
Терміни та результати
Аудит і виправлення існуючих hreflang для сайту до 500 сторінок — 2–3 робочих дні. Впровадження з нуля, включаючи генерацію в коді та XML Sitemap — 3–5 днів залежно від CMS або фреймворку. Для сайтів з нестандартною структурою URL (субдомени по регіонах, ccTLD) додається 1–2 дні на тестування.
Виправлення помилок hreflang економить до $15 000 на місяць на нецільовому трафіку — це підтверджують дані наших клієнтів. Середня економія становить $12 000 на місяць після налаштування. Зв'яжіться з нами для аудиту вашого сайту. Отримайте консультацію інженера — ми запропонуємо план дій і розрахуємо точну вартість.
Інструменти для валідації
Перевірити коректність можна кількома інструментами:
Google Search Console — розділ «Інтернаціоналізація» показує помилки hreflang: несиметричні посилання, невірні коди, сторінки без самопосилання.
Screaming Frog — краулить сайт і перевіряє взаємність hreflang між усіма версіями в розділі Internationalisation.
Переконайтеся, що використовуєте мовні коди BCP 47 (наприклад, ru, en, uk). Замовте налаштування hreflang у наших інженерів — ми гарантуємо усунення всіх помилок і зростання цільового трафіку.







