Каноническая ссылка (canonical) для многоязычных сайтов

Правильное использование canonical на мультиязычных сайтах: каждая языковая версия должна указывать на себя, а не на другой язык.

Кратко

На мультиязычных сайтах каждая языковая версия страницы должна иметь self-referencing canonical (ссылаться на саму себя). Это позволяет сохранить индексацию всех языковых вариантов, а связь между ними обеспечивается через hreflang. Указывать canonical на другую языковую версию — ошибка, которая может привести к деиндексации.

Self-referencing canonical для языковых версий

При использовании hreflang для указания языковых и региональных альтернатив важно, чтобы каждая версия страницы имела canonical-ссылку на саму себя. Это означает, что на https://example.com/en/page должен быть <link rel="canonical" href="https://example.com/en/page" />, а на русской версии — такой же ссылка на русскую. Такой подход сообщает Google, что каждая языковая версия является основным (каноническим) вариантом для своего языка.

Никогда не указывайте canonical с русской страницы на английскую (или наоборот) просто потому, что «английская оригинальная». Это приведёт к тому, что русская версия выпадет из индекса.

Пример правильной реализации

HTML
<!-- На https://example.com/en/page -->
<link rel="canonical" href="https://example.com/en/page" />
<link rel="alternate" hreflang="en" href="https://example.com/en/page" />
<link rel="alternate" hreflang="ru" href="https://example.com/ru/page" />

<!-- На https://example.com/ru/page -->
<link rel="canonical" href="https://example.com/ru/page" />
<link rel="alternate" hreflang="en" href="https://example.com/en/page" />
<link rel="alternate" hreflang="ru" href="https://example.com/ru/page" />

Обратите внимание: canonical указывает на ту же страницу, на которой он размещён. hreflang связывает две версии.

Чего делать нельзя

HTML
<!-- ОШИБКА: русская версия ссылается на английскую -->
<!-- На https://example.com/ru/page -->
<link rel="canonical" href="https://example.com/en/page" />
<link rel="alternate" hreflang="en" href="https://example.com/en/page" />
<link rel="alternate" hreflang="ru" href="https://example.com/ru/page" />

Такая конфигурация заставит Google считать, что русская страница — всего лишь дубликат английской. В результате русская версия будет исключена из индекса, и вы потеряете весь трафик из русскоязычного сегмента.

Исключения

Существует всего несколько ситуаций, когда допустимо указать canonical на другую языковую версию:

  • Контент полностью идентичен (не переведён) — например, на сайте есть две языковых версии, но для некоторых страниц перевод отсутствует, и они показывают одну и ту же английскую статью. Временное решение — указать canonical на основной язык.
  • Временная версия до перевода — вы создали русскую страницу, но она ещё не заполнена. Пока идёт перевод, можно указать canonical на английскую. Но как только перевод готов — canonical должен стать self-referencing.
Во всех остальных случаях (когда контент переведён и уникален) используйте только self-referencing canonical.

Как проверить

Вы можете проверить canonical с помощью curl или браузерных инструментов. Например, для русской страницы:

BASH
curl -I https://example.com/ru/page | grep -i canonical

Ожидаемый вывод: Link: <https://example.com/ru/page>; rel="canonical". Если вы видите другой URL (особенно на другом языке) — это ошибка, которую нужно исправить.

Частые вопросы

Потому что каждая языковая версия — это самостоятельный контент, предназначенный для своей аудитории. У них разные заголовки, мета-теги, текст. hreflang уже указывает связь между версиями, поэтому canonical не должен смешивать их.
Google может деиндексировать страницы с «неправильной» языковой версией. После исправления canonical потребуется время, чтобы поисковик снова включил их в индекс.
Если у вас отдельные домены под каждую страну, то canonical на этих доменах всё равно должен быть self-referencing. Например, для example.ru canonical на example.ru/страница, а для example.de на example.de/seite. hreflang при этом указывает на другие домены.
Да. Если canonical указывает на другую языковую версию, Google может проигнорировать hreflang или интерпретировать версию как дубликат. Всегда соблюдайте порядок: hreflang связывает, а canonical внутри каждой версии — на себя.
Принцип тот же: на /en/ странице canonical = example.com/en/page, на /ru/ = example.com/ru/page. hreflang указывает на соответствующие пути.
Прямые контакты

Обсудим ваш проект?

Расскажите о целях и сайте — предложу формат работы и следующий шаг.