Если в индексе появляются одинаковые или почти одинаковые страницы, одной правкой robots.txt проблему обычно не закрыть. Поисковик уже видит URL, сравнивает их между собой и выбирает канонический адрес сам. В WordPress это часто ломается из-за архивов, параметров сортировки, пагинации, страниц вложений, фильтров плагинов и тем, которые выводят один и тот же контент по разным адресам.
В этой статье разберём, как проверить источник дублей, где WordPress уже ставит canonical сам, когда его нужно поправить вручную и как не сломать индексацию полезных страниц.
Когда проблема действительно в canonical
Сначала стоит убедиться, что речь не о другой ошибке. Canonical помогает, когда контент доступен по нескольким URL, но должен считаться одной страницей. Типичные сценарии:
- запись открывается и по обычному URL, и через архив рубрики, метки или автора;
- страница доступна с параметрами
?utm_,?sort=,?filter=; - плагин создаёт альтернативные версии карточек, архивов или страниц поиска;
- у вложений изображений есть отдельные URL, которые не нужны в индексе;
- тема или SEO-плагин выводит неверный canonical на страницах пагинации.
Что проверить в первую очередь
Откройте проблемный URL и посмотрите исходный код страницы. В <head> должен быть один тег link rel="canonical". Если их два или больше, это уже конфликт темы и плагина. Если canonical указывает на другой адрес без понятной причины, нужно искать фильтр, который его меняет.
Полезно сравнить:
- URL в адресной строке;
- canonical в исходнике;
- URL в Google Search Console, если страница уже попала в индекс;
- наличие редиректа 301 между вариантами адреса.
Как WordPress формирует canonical по умолчанию
В ядре WordPress canonical выводится через стандартные функции темы и ядра, а также через SEO-плагины. На обычных записях и страницах это часто работает без вмешательства. Но на архивных страницах, пагинации и специальных шаблонах поведение зависит от темы и подключённых плагинов.
Если вы не используете SEO-плагин, WordPress сам может поставить базовый canonical, но он не всегда учитывает бизнес-логику сайта. Например, для страницы с параметром сортировки canonical должен указывать на чистый URL без параметра, а для пагинации — на саму страницу пагинации, а не на первую страницу архива.
Диагностика: откуда берётся неправильный canonical
Проверка обычно занимает несколько минут, если идти по порядку.
- Откройте страницу в браузере и посмотрите исходный код.
- Найдите все теги
canonical. - Проверьте, не добавляет ли их SEO-плагин и не дублирует ли тема.
- Сравните canonical с фактическим адресом страницы.
- Проверьте, не меняется ли canonical только на страницах с параметрами или только в архиве.
Если у вас есть доступ к серверу, можно быстро посмотреть заголовки и редиректы:
curl -I https://example.com/stranica/?utm_source=testДля canonical важен не только ответ сервера, но и HTML страницы. Если редиректа нет, а canonical указывает на чистый URL, это нормальная схема. Если же canonical ведёт на другой материал, поисковик может склеить страницы не так, как вы ожидаете.
Пошаговое решение: как задать canonical вручную
Если тема или плагин не дают нужный результат, canonical можно поправить через фильтр wpseo_canonical для Yoast SEO или rank_math/frontend/canonical для Rank Math. Если SEO-плагина нет, можно использовать общий фильтр get_canonical_url в зависимости от сценария.
Ниже пример для сайта, где нужно убрать параметры utm_ и sort из canonical на обычных страницах, но не трогать саму страницу пагинации.
add_filter( 'get_canonical_url', function( $canonical, $post ) {
if ( is_admin() || ! $canonical ) {
return $canonical;
}
if ( is_singular() ) {
return remove_query_arg( array( 'utm_source', 'utm_medium', 'utm_campaign', 'sort' ), $canonical );
}
return $canonical;
}, 10, 2 );Если вы используете Yoast SEO и нужно точечно поправить canonical только для одной записи или типа записей, удобнее работать через его фильтр:
add_filter( 'wpseo_canonical', function( $canonical ) {
if ( is_singular( 'post' ) && has_category( 'news' ) ) {
return remove_query_arg( array( 'utm_source', 'utm_medium', 'utm_campaign' ), $canonical );
}
return $canonical;
} );Смысл простой: canonical должен указывать на основную версию страницы, а не на технический параметр или случайный дубль. Но не стоит массово переписывать canonical для всего сайта без проверки. На архивных страницах, пагинации и страницах фильтров логика может отличаться.
Если дубли создаёт архив или страница вложения
Частая ошибка — пытаться решить всё canonical-ом, когда нужно убрать сам источник дубля. Например, страницы вложений изображений часто не несут пользы и только размножают URL. В таком случае лучше либо редиректить вложения на файл или родительскую запись, либо отключать их индексацию, если это соответствует структуре сайта.
Для архивов рубрик и меток canonical обычно должен указывать на сам архив, а не на главную страницу. Если плагин или тема подменяют его на первую страницу раздела, это ломает пагинацию и может мешать индексации глубины архива.
Когда нужен редирект, а не canonical
Canonical — это подсказка для поисковика. Редирект — это жёсткое указание для браузера и робота. Если страница вообще не должна существовать, например, старый URL после смены структуры, лучше ставить 301. Если же страница нужна пользователю, но есть её технические копии, canonical подходит лучше.
| Ситуация | Что делать | Компромисс |
|---|---|---|
| Технический дубль с параметрами | Canonical на чистый URL | Пользователь видит тот же контент, поисковик склеивает адреса |
| Старый URL после миграции | 301 редирект | Нужна проверка всех старых ссылок |
| Страница вложения изображения | Редирект или noindex | Зависит от того, нужны ли такие страницы в навигации |
Чек-лист после внедрения
- на странице остался один тег
canonical; - canonical указывает на нужный URL без лишних параметров;
- страница открывается без циклического редиректа;
- пагинация архива не склеивается с первой страницей;
- в Search Console не растёт число дублей с выбранным вами canonical;
- SEO-плагин и тема не добавляют разные canonical одновременно.
Как проверить, что решение сработало
После правки откройте несколько типовых URL: чистую страницу, URL с UTM-метками, архив, пагинацию и, если есть, страницу вложения. В исходном коде проверьте, что canonical ведёт на ожидаемый адрес. Затем прогоните страницу через инструменты проверки URL в Search Console и посмотрите, какой canonical выбирает Google.
Если вы меняли фильтр в коде, дополнительно проверьте кэш страницы и кэш на уровне CDN. Иначе вы можете смотреть старую версию HTML и решить, что правка не сработала.
Частые ошибки и как их исправить
Два canonical в одном документе
Обычно это конфликт темы и SEO-плагина. Оставьте один источник генерации canonical. Если плагин уже управляет метатегами, не дублируйте его в шаблоне темы.
Canonical указывает на главную страницу сайта
Такое часто появляется после неудачной настройки шаблона или фильтра. Для внутренней страницы canonical должен вести на саму страницу или на её основную версию, а не на корень сайта.
Canonical убирает параметры пагинации
Это ломает индексацию архивов. Пагинация — не дубль первой страницы, если у неё есть уникальный набор записей. Не переписывайте canonical для архивов без проверки логики шаблона.
Проверка идёт на старом HTML из кэша
После изменения кода сбросьте кэш плагина, серверный кэш и CDN. Иначе вы будете тестировать неактуальный документ.
Практические советы по безопасности и производительности
Не вносите правки canonical через прямое редактирование ядра или плагина. Используйте дочернюю тему, мини-плагин или mu-plugin. Так вы не потеряете изменения после обновления.
Если на сайте много архивов и фильтров, имеет смысл сначала навести порядок в генерации URL: убрать лишние параметры, закрыть ненужные технические страницы и только потом править canonical. Иначе поисковик будет постоянно видеть новые комбинации дублей.
Если вам нужен более системный подход к чистке дублей, технических страниц и SEO-ошибок, можно посмотреть в сторону инструментов вроде Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже с плагином полезно понимать, какой именно URL вы хотите считать основным и почему.
В реальной поддержке сайта canonical — это не «галочка для SEO», а способ объяснить поисковику структуру адресов. Если сначала найти источник дублей, а потом точечно поправить канонический URL, результат обычно получается стабильнее, чем при массовых правках наугад.