На обычном WordPress-сайте дубли часто появляются не из-за «плохого SEO», а из-за рабочих вещей: поиск по сайту, параметры в URL, страницы с сортировкой, фильтры, пагинация, UTM-метки. Если такие страницы начинают конкурировать с основными, поисковик видит несколько почти одинаковых документов и выбирает canonical сам. Иногда выбирает неудачно.
Ниже — практическая схема: где canonical нужен сам на себя, где лучше указывать основную страницу, а где вообще не стоит пытаться «лечить» дубли canonical-ом и нужно закрывать источник проблемы на уровне шаблона или плагина.
Когда canonical действительно нужен
Canonical полезен, когда у вас есть несколько URL с одинаковым или почти одинаковым содержимым, но только один из них должен считаться основной версией. Типичные случаи:
- страница поиска вида
/?s=текст; - URL с параметрами сортировки и фильтрации;
- страницы с UTM-метками и другими маркетинговыми параметрами;
- архивы, которые доступны в нескольких вариантах URL;
- страницы пагинации, если их содержимое не должно конкурировать с первой страницей архива.
Canonical не решает проблему индексации сам по себе. Он только подсказывает поисковику предпочтительный URL. Если страница технически мусорная, лучше дополнительно закрыть её от индексации или убрать из генерации.
Диагностика: где у вас появляются дубли
Сначала проверьте, какие URL реально отдают одинаковый контент. Не гадайте по отчетам — откройте несколько вариантов вручную и сравните:
- основной URL страницы;
- тот же URL с параметром
?utm_source=test; - страница поиска
/?s=...; - страница с параметром сортировки или фильтра;
- пагинация архива.
В исходном коде страницы найдите тег canonical:
<link rel="canonical" href="https://example.com/page/" />Если canonical отсутствует, дубли часто появляются из-за темы или SEO-плагина, который не настроен для конкретного типа страниц. Если canonical есть, но указывает на неправильный URL, проблема обычно в шаблоне, фильтрах плагина или в том, как формируется запрос.
Что смотреть в Search Console
В отчете по страницам и в проверке URL полезно смотреть не только статус индексации, но и выбранный Google canonical. Если поисковик выбрал не тот адрес, это сигнал, что ваши сигналы противоречат друг другу: canonical, внутренние ссылки, sitemap, редиректы и контент на странице.
Пошаговое решение для WordPress
Если у вас есть SEO-плагин, сначала проверьте, не делает ли он canonical уже автоматически. Во многих случаях ручной код не нужен. Но если нужно точечно исправить поведение для поиска или параметров, удобнее сделать это через фильтр WordPress.
1. Оставьте самоссылку для обычных страниц
Для стандартных страниц, записей и рубрик canonical должен указывать на сам URL. Это базовое поведение, которое не стоит ломать без причины.
Если вы пишете свою логику, используйте фильтр rel_canonical аккуратно и только для нужных шаблонов:
<?php
add_filter('rel_canonical', function ($canonical) {
if (is_search()) {
return home_url('/');
}
return $canonical;
});Этот пример не универсален для всех сайтов. На многих проектах страницу поиска лучше вообще не индексировать, а canonical на главную использовать только если это осознанное решение. Чаще правильнее закрыть поиск от индексации и не пытаться передавать ему вес.
2. Для параметров фильтра укажите основную страницу
Если фильтр меняет только сортировку или внешний вид списка, а не смысл страницы, canonical должен вести на чистый URL без параметров. Это особенно полезно для URL вида ?sort=price, ?orderby=popular, ?color=red, если контент страницы по сути тот же.
<?php
add_filter('rel_canonical', function ($canonical) {
if (empty($_GET)) {
return $canonical;
}
$ignore = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content'];
$query = array_diff_key($_GET, array_flip($ignore));
if (!empty($query) && is_singular()) {
return get_permalink();
}
return $canonical;
});Здесь есть важная оговорка: не надо слепо обнулять все параметры. Некоторые параметры могут менять контент настолько, что это уже отдельная посадочная страница. Если параметр влияет на смысл страницы, canonical на чистый URL может быть неверным.
3. Уберите мусорные параметры из внутренних ссылок
Canonical помогает, но лучше не плодить дубли вообще. Проверьте, не добавляет ли тема или плагин UTM-метки во внутренние ссылки, не генерирует ли меню URL с параметрами, не подставляет ли фильтр «поделиться» лишние query string.
Если проблема в шаблоне, исправление часто проще, чем последующая борьба с дублями в индексе.
Сравнение подходов
| Подход | Когда подходит | Минус |
|---|---|---|
| Canonical через SEO-плагин | Обычные записи, страницы, архивы | Не всегда удобно для точечных исключений |
Фильтр rel_canonical в коде | Нужна точная логика для поиска, параметров, шаблонов | Требует аккуратной проверки после обновлений |
| Редирект или noindex | Технические страницы, мусорный поиск, бесполезные параметры | Можно случайно убрать полезные страницы из индекса |
Проверка результата после внедрения
После правки не ограничивайтесь просмотром исходника. Проверьте три уровня:
- В браузере откройте проблемный URL и убедитесь, что canonical ведет туда, куда вы ожидали.
- Проверьте ответ сервера через
curlили DevTools, чтобы исключить редиректы и кэш старой версии. - В Search Console отправьте URL на повторную проверку и посмотрите, какой canonical выбрал Google.
Пример быстрой проверки через командную строку:
curl -I https://example.com/?s=testЕсли страница отдает 200 OK, но canonical указывает на другую страницу, это нормально только в том случае, если вы действительно хотите, чтобы поисковик считал основной именно другую версию. Если нет — исправляйте логику.
Частые ошибки и как их исправить
Canonical указывает на главную страницу без причины
Так делают, когда хотят «склеить» все подряд. В результате поисковик может проигнорировать полезные посадочные страницы. Для поиска и фильтров это особенно опасно: вы теряете релевантность, а не просто убираете дубль.
На странице есть и canonical, и noindex, и редирект одновременно
Это конфликт сигналов. Если страница должна быть недоступна для индексации, обычно достаточно одного понятного решения: либо noindex, либо редирект, либо canonical на основную версию. Не смешивайте всё сразу без необходимости.
Параметры UTM ломают кэш и создают отдельные URL
Если кэш-плагин сохраняет версии страниц с UTM как отдельные документы, canonical не спасет от лишней нагрузки. В таком случае нужно настраивать игнорирование маркетинговых параметров на уровне кэша и аналитики.
Тема или плагин перезаписывает canonical после вашей правки
Это частая история, когда SEO-плагин и кастомный код работают одновременно. Оставьте только один источник canonical для конкретного типа страниц. Иначе в HTML может оказаться несколько тегов, а поисковик выберет любой из них.
Практические советы по безопасности и производительности
Если canonical на сайте приходится настраивать вручную, не делайте это через правки в ядре темы. Используйте дочернюю тему, мини-плагин или mu-plugin. Так вы не потеряете изменения после обновления.
Для сайтов с большим количеством фильтров полезно:
- ограничить индексацию параметров, которые не меняют смысл страницы;
- не генерировать лишние URL в меню и хлебных крошках;
- проверить, не создает ли кэш отдельные версии для каждого query string;
- не ставить canonical на страницы, которые должны быть полностью исключены из индекса.
Если вам нужен более широкий контроль над дублями, техническими страницами и чисткой SEO-сигналов, можно посмотреть в сторону Clearfy Pro: https://wpshop.ru/plugins/clearfy?utm_source=wpskins.ru&utm_medium=article&utm_campaign=kak-nastroit-ustranenie-dubley-canonical-v-wordpress-dlya-stranits-filtra-i-poiska
В итоге рабочая схема простая: сначала находите источник дубля, потом решаете, нужен ли этой странице индекс вообще, и только после этого настраиваете canonical. Если начать с тега, а не с причины, проблема обычно возвращается на следующем параметре или новом шаблоне.