Загрузка...
Загрузка...
Полное руководство по атрибуту hreflang: синтаксис, методы реализации, проверка. Настройка мультиязычных и мультирегиональных сайтов для корректной индексации в Google.
Стратегия международного SEO: выбор структуры URL, настройка hreflang, геотаргетинг, контент и технические аспекты продвижения мультиязычных сайтов.
SEOРаспространённые ошибки при настройке hreflang: отсутствие взаимных ссылок, неверные коды, конфликты с canonical. Практические решения и проверка разметки.
SEOРуководство по FAQ Schema разметке: формат JSON-LD, требования Google, генерация FAQPage, проверка и типичные ошибки.
SEOРуководство по написанию alt-тегов для изображений: правила, примеры, типичные ошибки. Влияние на SEO и доступность.
Поделитесь с коллегами или изучите другие материалы блога
Hreflang — атрибут, который сообщает поисковым системам о языковых и региональных версиях страницы. Без hreflang Google может показывать пользователю из Испании русскоязычную версию или индексировать дубли вместо правильных вариантов. В этом руководстве разберём синтаксис, методы реализации и типичные ошибки настройки hreflang.
Мультиязычные и мультирегиональные сайты сталкиваются с проблемами:
Hreflang решает эти проблемы, явно указывая поисковикам связь между версиями и предпочтительный вариант для каждого языка/региона.
Код состоит из кода языка (ISO 639-1) и опционально кода региона (ISO 3166-1 Alpha 2):
| Код | Значение |
|---|---|
| ru | Русский |
| en | Английский |
| en-GB | Английский (Великобритания) |
| en-US | Английский (США) |
| de | Немецкий |
| es | Испанский |
| x-default | Версия по умолчанию (когда нет подходящей локали) |
1. В HTML (link в head):
<head>
<link rel="alternate" hreflang="ru" href="https://example.com/ru/page" />
<link rel="alternate" hreflang="en" href="https://example.com/en/page" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/page" />
</head>
2. В HTTP-заголовках:
Link: <https://example.com/ru/page>; rel="alternate"; hreflang="ru",
<https://example.com/en/page>; rel="alternate"; hreflang="en",
<https://example.com/en/page>; rel="alternate"; hreflang="x-default"
3. В sitemap XML:
<url>
<loc>https://example.com/ru/page</loc>
<xhtml:link rel="alternate" hreflang="ru" href="https://example.com/ru/page"/>
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/page"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/en/page"/>
</url>
Достаточно одного метода. Рекомендуется HTML — самый простой для проверки и отладки.
Каждая версия должна ссылать на все остальные, включая саму себя:
<!-- На странице /ru/page -->
<link rel="alternate" hreflang="ru" href="https://example.com/ru/page" />
<link rel="alternate" hreflang="en" href="https://example.com/en/page" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/page" />
<!-- На странице /en/page — те же три ссылки -->
Отсутствие самоссылки или ссылки на другую версию — частая ошибка.
Google рекомендует абсолютные URL. Относительные могут работать, но абсолютные надёжнее:
<!-- Рекомендуется -->
<link rel="alternate" hreflang="en" href="https://example.com/en/page" />
<!-- Допустимо, но не рекомендуется -->
<link rel="alternate" hreflang="en" href="/en/page" />
x-default указывает версию по умолчанию — когда язык/регион пользователя не совпадает ни с одним вариантом. Обычно это английская или международная версия:
<link rel="alternate" hreflang="x-default" href="https://example.com/en/page" />
Все hreflang-ссылки для одной страницы должны быть в одном месте. Нельзя разбивать на несколько блоков.
ru.example.com
en.example.com
de.example.com
example.com/ru/
example.com/en/
example.com/de/
example.ru
example.de
example.co.uk
Google не отдаёт предпочтения структуре. Важно консистентность и корректный hreflang.
Страница на русском с версиями на английском и немецком:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Услуги — Пример</title>
<link rel="alternate" hreflang="ru" href="https://example.com/ru/services" />
<link rel="alternate" hreflang="en" href="https://example.com/en/services" />
<link rel="alternate" hreflang="de" href="https://example.com/de/services" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/services" />
</head>
<body>
<!-- Контент -->
</body>
</html>
На каждой из трёх страниц (ru, en, de) должен быть идентичный набор из четырёх link-тегов.
Для CMS и фреймворков — генерация на основе текущей страницы:
// PHP пример
$currentPath = $_SERVER['REQUEST_URI'];
$languages = ['ru', 'en', 'de'];
foreach ($languages as $lang) {
$url = 'https://example.com/' . $lang . $currentPath;
echo '<link rel="alternate" hreflang="' . $lang . '" href="' . $url . '" />' . "\n";
}
echo '<link rel="alternate" hreflang="x-default" href="https://example.com/en' . $currentPath . '" />';
// Next.js (App Router)
export default function Layout({ params: { lang } }) {
const languages = ['ru', 'en', 'de'];
return (
<html>
<head>
{languages.map((l) => (
<link
key={l}
rel="alternate"
hreflang={l}
href={`https://example.com/${l}/${pathname}`}
/>
))}
<link rel="alternate" hreflang="x-default" href={`https://example.com/en/${pathname}`} />
</head>
<body>{children}</body>
</html>
);
}
Используйте инструмент проверки hreflang на reChecker для аудита разметки. Инструмент выявит:
Для комплексной технической проверки мультиязычного сайта — технический аудит reChecker.
Hreflang и canonical решают разные задачи:
На мультиязычной странице canonical обычно указывает на саму себя:
<link rel="canonical" href="https://example.com/ru/page" />
<link rel="alternate" hreflang="ru" href="https://example.com/ru/page" />
<link rel="alternate" hreflang="en" href="https://example.com/en/page" />
Не канонизируйте русскую страницу на английскую или наоборот — это разные версии контента.
Если используете sitemap для hreflang, каждый URL в наборе должен быть представлен в sitemap. Один блок url содержит loc и все xhtml:link для каждой версии.
При большом количестве страниц — sitemap index. Каждый sitemap в индексе содержит свои URL с hreflang. Структура должна быть консистентной.
Не все страницы существуют на всех языках. Например, блог только на русском, услуги — на русском и английском. В наборе hreflang включайте только реально существующие URL. Не ссылайте на несуществующие версии.
en-US, en-GB, en-AU — разные регионы, один язык. Hreflang различает их. Используйте коды регионов, когда контент адаптирован под регион (валюта, правописание, примеры).
Откройте каждую версию страницы, просмотрите HTML. Убедитесь, что link-теги присутствуют и идентичны на всех страницах набора.
Инструмент hreflang на reChecker проверяет разметку, выявляет ошибки взаимных ссылок, кодов, x-default. Экономит время при аудите.
Отчёт «Международная целевая аудитория» показывает проблемы с hreflang, если они влияют на индексацию. Ошибки отображаются с рекомендациями.
| Проверка | Статус |
|---|---|
| Все версии ссылают друг на друга | |
| Каждая страница ссылает на саму себя | |
| Указан x-default | |
| Используются абсолютные URL | |
| Коды языков по ISO 639-1 | |
| Коды регионов по ISO 3166-1 (если нужны) | |
| Разметка на каждой странице набора | |
| Нет ссылок на несуществующие версии | |
| Sitemap обновлён (если используется) |
Подробнее о продвижении сайтов на разных языках — в руководстве по международному SEO. Типичные ошибки hreflang и их исправление — в статье ошибки hreflang. Проверить разметку можно в инструменте hreflang и техническом аудите на reChecker.