Как настроить canonical в WordPress для борьбы с дублями страниц

Если одна и та же страница в WordPress открывается по разным адресам, поисковик может воспринимать это как дубли. В итоге в индексе оказываются несколько URL с одинаковым или почти одинаковым содержимым, а сигналы ранжирования распыляются между ними. Canonical как раз нужен для того, чтобы явно указать основную, каноническую версию страницы и подсказать поисковой системе, какой адрес считать главным.

Для WordPress это особенно актуально, когда один и тот же контент доступен через параметры в URL, пагинацию, архивы, сортировки, UTM-метки, версии со слешем и без него, а иногда и через разные шаблоны темы или плагины. Сам по себе canonical не удаляет дубли из сайта, но помогает поисковику выбрать правильный адрес и снижает риск каннибализации в выдаче.

Когда canonical действительно нужен

Тег canonical нужен не для всех страниц подряд, а там, где есть несколько URL с одним и тем же или почти одинаковым содержимым. Типичные случаи в WordPress:

  • страница доступна с параметрами сортировки или фильтрации;
  • в URL добавляются UTM-метки и другие tracking-параметры;
  • один и тот же материал открывается в нескольких разделах или архивах;
  • есть версии с www и без www, http и https, со слешем и без слеша;
  • пагинация создаёт несколько адресов одной сущности;
  • плагины или тема выводят одинаковый контент на разных URL.

Если страницы реально разные по смыслу, canonical ставить на одну из них нельзя. Например, у разных товаров, статей или посадочных страниц должен быть свой собственный адрес. Canonical используют только тогда, когда дублируется именно URL, а не содержание как отдельная сущность.

Как WordPress и SEO-плагины обычно формируют canonical

В современных версиях WordPress базовый canonical для записей и страниц часто уже выводится автоматически, но на практике этого не всегда достаточно. Плагины SEO-оптимизации могут переопределять тег, добавлять его на архивы, таксономии и другие типы страниц, а тема или кастомный код иногда ломают вывод или создают несколько canonical одновременно.

Если у вас установлен SEO-плагин, сначала проверьте, не управляет ли он canonical сам. В большинстве случаев лучше использовать один источник правды: либо возможности SEO-плагина, либо собственный код. Два разных canonical на одной странице — это уже ошибка, которую поисковик может проигнорировать.

Проверьте, какой canonical сейчас отдает сайт

Перед изменениями полезно понять, что уже выводится в коде страницы. Откройте нужный URL в браузере, посмотрите исходный код и найдите строку с <link rel="canonical" href="..." />. Если canonical отсутствует, ведёт на неправильный адрес или дублируется, это и есть точка для исправления.

Проверять стоит не только главную страницу, но и проблемные варианты URL: с параметрами, с www и без www, с UTM-метками, с пагинацией, а также страницы, которые открываются из разных разделов сайта. Если canonical везде указывает на разные адреса для одного и того же контента, поисковику будет сложнее выбрать основную версию.

Как задать canonical в WordPress через SEO-плагин

Самый практичный вариант для большинства сайтов — настроить canonical в SEO-плагине, если он уже используется. Это проще и безопаснее, чем писать собственный код, потому что плагин обычно умеет корректно обрабатывать записи, страницы, архивы и таксономии.

Логика настройки в популярных SEO-плагинах обычно одинаковая: вы открываете нужную запись или страницу в админке, находите поле canonical URL и указываете полный адрес канонической версии. После сохранения плагин начинает выводить этот адрес в <head>.

Если canonical нужен для архивной страницы или таксономии, настройка может быть в общих параметрах SEO-плагина или в редактировании термина. Здесь важно не подменять канонический адрес случайным URL из другой сущности: canonical должен вести на страницу с тем же смыслом и тем же контентом.

Когда нужен собственный код и как его добавить

Свой код нужен, если SEO-плагина нет, он не даёт нужной гибкости или canonical нужно менять по нестандартному правилу. В WordPress для этого используют фильтр wpseo_canonical в Yoast SEO или аналогичный механизм конкретного SEO-плагина. Если SEO-плагина нет, можно вывести тег через wp_head, но тогда нужно аккуратно следить, чтобы не было второго canonical от темы или другого плагина.

Ниже пример для случая, когда нужно принудительно задать canonical для конкретной страницы. Код лучше добавлять в дочернюю тему или через собственный мини-плагин, а не прямо в файлы основной темы.

add_filter( 'wpseo_canonical', function( $canonical ) {
    if ( is_page( 123 ) ) {
        return home_url( '/osnovnaya-stranica/' );
    }

    return $canonical;
} );

В этом примере для страницы с ID 123 canonical будет указывать на адрес /osnovnaya-stranica/. Число 123 и URL нужно заменить на свои значения. Если у вас другой SEO-плагин, фильтр будет отличаться, поэтому сначала проверьте документацию именно этого плагина.

Если canonical нужно выводить без SEO-плагина, можно использовать wp_head. Такой вариант рабочий, но требует внимательности: сначала убедитесь, что тема не печатает свой canonical сама.

add_action( 'wp_head', function() {
    if ( is_page( 123 ) ) {
        echo '<link rel="canonical" href="' . esc_url( home_url( '/osnovnaya-stranica/' ) ) . '" />' . "\n";
    }
}, 1 );

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

Что делать с дублями от параметров, сортировки и UTM-меток

Если дубли появляются из-за параметров в URL, canonical обычно должен указывать на чистый адрес без параметров. Это касается UTM-меток, служебных параметров и некоторых вариантов сортировки, когда содержимое страницы по сути не меняется.

Например, если статья открывается как https://site.ru/post/?utm_source=newsletter, canonical должен вести на https://site.ru/post/. Так поисковик понимает, что параметр не создаёт новую страницу, а лишь меняет источник перехода или способ отображения.

С фильтрами и сортировкой нужно быть осторожнее. Если параметр действительно меняет состав товаров, записей или результатов поиска, canonical на чистую страницу может быть неверным. В таких случаях решение зависит от того, хотите ли вы индексировать вариант с фильтром как отдельную страницу или нет. Универсального ответа здесь нет, и подменять разные по смыслу страницы одной канонической версией нельзя.

Как проверить, что настройка сработала

После изменения откройте страницу в браузере и снова проверьте исходный код. В <head> должен быть только один canonical, и он должен вести на нужный URL. Если вы меняли код, проверьте не только страницу, но и её проблемные варианты с параметрами.

Дополнительно полезно посмотреть, как страницу видит поисковая система: через инструменты вебмастера или проверку URL в поисковой консоли. Если canonical указан правильно, но поисковик выбирает другой адрес, значит есть более сильные сигналы: внутренние ссылки, редиректы, sitemap, дубли в шаблонах или конфликтующие canonical на других версиях страницы.

Если canonical не появился, проверьте три вещи: не отключён ли его вывод в SEO-плагине, не печатает ли тема свой тег отдельно и не кешируется ли старая версия страницы. На сайтах с агрессивным кешированием после правок иногда нужно очистить кеш плагина, сервера и CDN, иначе вы будете видеть старый HTML.

Какие ошибки чаще всего мешают canonical работать

На практике проблемы обычно возникают не из-за самого тега, а из-за неправильной логики его применения. Самые частые ошибки такие:

  • canonical ведёт на несуществующую страницу или страницу с редиректом;
  • на одной странице выводится сразу несколько canonical;
  • canonical указывает на URL с параметрами, хотя нужен чистый адрес;
  • каноническая версия отличается по смыслу от исходной страницы;
  • редирект и canonical противоречат друг другу;
  • внутренние ссылки ведут на неканонические варианты, хотя в коде canonical задан правильно.

Если canonical и редирект конфликтуют, обычно приоритетнее редирект: он жёстко отправляет пользователя и поисковика на другой адрес. Canonical — это рекомендация, а не принудительное правило. Поэтому для явных дублей лучше сначала устранить причину появления лишних URL, а canonical использовать как дополнительный сигнал.

Когда одного canonical недостаточно

Canonical помогает, но не заменяет нормальную структуру сайта. Если дубли создаются из-за неправильных ссылок, лишних архивов, одинаковых шаблонов или технических ошибок, лучше исправить источник проблемы. Иначе поисковик будет постоянно получать новые варианты одного и того же контента.

Для WordPress это обычно означает три практических шага: привести внутренние ссылки к одному формату, убрать лишние версии URL на уровне настроек и шаблонов, а затем уже закрепить основную версию через canonical. Такой порядок даёт более стабильный результат, чем попытка лечить всё только тегом в <head>.

Если на сайте много технических дублей и нужно централизованно управлять SEO-настройками, имеет смысл посмотреть в сторону решений, которые помогают контролировать мета-теги и лишние страницы. Например, Clearfy Pro может быть полезен как инструмент для работы с SEO-настройками и дублями, если вам нужен более удобный контроль без ручного правки кода.

В итоге canonical в WordPress — это не сложная настройка, а аккуратная фиксация главного URL для страниц, которые доступны в нескольких вариантах. Если задать его на правильную версию, проверить вывод в коде и не смешивать разные по смыслу страницы, риск дублей и каннибализации заметно снижается.

Как добавить атрибуты ALT и TITLE к картинкам в WordPress автоматически
25.09.2026
Как оптимизировать загрузку шаблонов WordPress для ускорения сайта
13.09.2026
Как удалить дубли страниц в WordPress и оставить одну каноническую версию
14.08.2026
Как использовать каскадные меню в WordPress: примеры кода и лучшие плагины
14.09.2026
Как изменить количество постов на странице архива WordPress: практическое руководство
09.09.2026
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше