Если в Search Console растёт число страниц с одинаковым контентом, а в индексе появляются URL с ?sort=, ?filter=, ?utm= и похожими параметрами, проблема обычно не в «плохом SEO», а в том, что сайт сам создаёт лишние варианты одних и тех же страниц. Для WordPress это типичная история: архивы, поиск, фильтры, сортировка, пагинация и UTM-метки могут плодить дубли быстрее, чем их успевает переобходить поисковик.
Ниже разберём, как найти источник дублей, что закрывать, что оставлять, и как проверить, что после правок сайт не потерял нужные страницы из индекса.
Как понять, что у вас именно дубли от параметров URL
Сначала стоит отличить нормальные служебные URL от действительно вредных дублей. Не каждый адрес с параметром нужно закрывать. Например, ?replytocom= или ?amp могут быть техническими, а ?sort=price и ?filter_color=red часто создают отдельные версии каталога или архива с тем же набором блоков, но без уникального смысла для поиска.
Признаки проблемы
- в отчёте «Страницы» в Search Console много URL с параметрами;
- одна и та же страница доступна по нескольким адресам;
- в поиске индексируются версии с сортировкой, фильтрами или UTM;
- канонический URL на странице указывает на один адрес, а в индексе живут другие;
- в логах или аналитике видны частые заходы на URL с параметрами, которые не несут отдельной ценности.
Что проверить руками
Откройте несколько вариантов одного и того же URL в браузере и сравните:
- меняется ли контент по сути или только порядок карточек;
- меняется ли title и meta description;
- есть ли canonical;
- не создаёт ли фильтр отдельную страницу с тонким контентом.
Если страница отличается только сортировкой, а не смыслом, это почти всегда кандидат на канонизацию или закрытие от индексации. Если же параметр реально меняет контент и у него есть поисковый спрос, решение нужно принимать аккуратно, а не рубить всё подряд.
Диагностика: где WordPress обычно плодит дубли
На практике источники повторов почти всегда одни и те же. Удобно пройтись по ним по очереди, чтобы не лечить симптом вместо причины.
| Источник дубля | Что происходит | Что обычно делать |
|---|---|---|
| Сортировка | Один и тот же архив доступен в разных порядках | Оставить один канонический URL, остальные закрыть или не индексировать |
| Фильтры | Параметры создают множество комбинаций | Закрывать технические комбинации, оставлять только ценные посадочные |
| UTM и рекламные метки | Один контент получает десятки адресов | Сохранять для аналитики, но не индексировать |
| Поиск по сайту | Результаты поиска индексируются как отдельные страницы | Обычно закрывать от индексации |
| Пагинация архивов | Страницы 2, 3, 4 повторяют шаблон архива | Проверить canonical и индексацию по задаче сайта |
Если у вас стоит SEO-плагин, проверьте его настройки для архивов, мета robots и canonical. Но даже хороший плагин не спасёт, если тема или кастомный код генерируют ссылки с параметрами без контроля.
Пошаговое решение без лишнего риска
Шаг 1. Определите, какие параметры нужно оставить
Не все параметры одинаково вредны. Разделите их на три группы:
- служебные — UTM, внутренние метки, параметры сессии;
- технические — сортировка, отображение, AJAX-фильтры, которые не должны индексироваться;
- ценные — параметры, которые реально создают отдельную поисковую посадочную страницу.
Если параметр нужен только для аналитики или интерфейса, его не стоит пускать в индекс. Если он создаёт полезную посадочную, лучше не закрывать его «на всякий случай», а сделать отдельную SEO-страницу без мусорных комбинаций.
Шаг 2. Приведите canonical к одному варианту
Для большинства дублей правильный canonical — это базовый URL без параметров. В WordPress это можно контролировать через фильтр wpseo_canonical в Yoast SEO или аналогичные механизмы в других SEO-плагинах. Если плагина нет, можно задать canonical вручную в шаблоне, но только если вы понимаете, как это повлияет на архивы и страницы пагинации.
<?php
add_filter( 'wpseo_canonical', function( $canonical ) {
if ( is_search() ) {
return home_url( '/' );
}
if ( isset( $_GET['sort'] ) || isset( $_GET['filter'] ) ) {
return remove_query_arg( array( 'sort', 'filter', 'utm_source', 'utm_medium', 'utm_campaign' ), home_url( add_query_arg( array(), $GLOBALS['wp']->request ) ) );
}
return $canonical;
} );Этот пример нужно адаптировать под ваш сайт. Важно не собирать URL вручную «из головы», а использовать функции WordPress для работы с query string. Иначе легко получить битые адреса или каноникал на несуществующую страницу.
Шаг 3. Уберите параметры из внутренних ссылок
Если шаблон темы или фильтр плагина постоянно генерирует ссылки с UTM или сортировкой, поисковик будет снова и снова находить дубли. Лучше исправить источник, чем потом бесконечно закрывать последствия.
<?php
function wpmagazin_clean_internal_url( $url ) {
$remove = array( 'utm_source', 'utm_medium', 'utm_campaign', 'sort', 'filter' );
return remove_query_arg( $remove, $url );
}
add_filter( 'post_link', 'wpmagazin_clean_internal_url' );
add_filter( 'page_link', 'wpmagazin_clean_internal_url' );
add_filter( 'term_link', 'wpmagazin_clean_internal_url' );Такой подход полезен, если параметры попадают во внутренние ссылки случайно. Но не используйте его для внешних рекламных ссылок, где параметры нужны для аналитики.
Шаг 4. Закройте от индексации служебные страницы
Страницы поиска, корзины, личного кабинета, технические фильтры и некоторые архивы лучше не индексировать. Для этого обычно достаточно мета robots noindex,follow или правил SEO-плагина. Не путайте это с Disallow в robots.txt: если закрыть URL только в robots.txt, поисковик может не увидеть canonical и продолжит держать адрес в индексе как «запрещённый к обходу».
Практически безопаснее сначала поставить noindex, а уже потом при необходимости ограничивать обход. Для WordPress это особенно актуально на страницах поиска и фильтров.
Когда лучше использовать плагин, а когда код
Если сайт на типовом наборе плагинов, проще начать с настроек SEO-плагина и фильтров. Если дубли создаёт кастомная тема, собственный каталог или нестандартный фильтр, без кода не обойтись. Ниже — короткое сравнение.
| Подход | Плюсы | Минусы |
|---|---|---|
| Настройки SEO-плагина | Быстро, безопасно, без правки темы | Не всегда покрывает кастомные параметры |
| Код в теме или mu-plugin | Точный контроль над canonical и ссылками | Нужна аккуратность и тестирование |
| robots.txt | Просто ограничить обход | Не решает проблему дубля как таковую |
Если нужен системный контроль за дублями, чисткой служебных URL и SEO-мета, имеет смысл смотреть в сторону инструментов вроде Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже с плагином всё равно нужно понимать, какие страницы вы закрываете и почему.
Проверка результата после внедрения
После изменений не ограничивайтесь визуальной проверкой. Нужно убедиться, что поисковик видит именно тот вариант, который вы считаете основным.
Чек-лист проверки
- откройте базовый URL и URL с параметром, сравните canonical;
- проверьте, что внутренние ссылки больше не ведут на параметризованные адреса;
- посмотрите исходный код страницы на наличие
noindexтам, где он нужен; - в Search Console отправьте на переобход важные страницы;
- через несколько дней проверьте отчёт по индексированию и список обнаруженных URL.
Если на сайте есть логирование или доступ к серверным логам, полезно посмотреть, как поисковые роботы ходят по параметризованным адресам после правок. Снижение числа обходов не всегда видно сразу, но обычно хорошо заметно по отчётам и логам.
Что считать нормальным результатом
Нормально, если:
- в индексе остаётся базовая версия страницы;
- служебные параметры перестают появляться как отдельные посадочные;
- canonical указывает на чистый URL;
- поиск и фильтры продолжают работать для пользователей.
Плохо, если после правок пропали нужные страницы фильтров, а трафик на полезные посадочные упал. Это значит, что вы закрыли не только мусор, но и ценные комбинации.
Частые ошибки и как их исправить
Закрывают всё через robots.txt
Это частая ошибка. Robots.txt ограничивает обход, но не гарантирует удаление из индекса. Если URL уже известен поисковику, он может ещё долго висеть в результатах. Исправление: сначала noindex или canonical, потом при необходимости robots.txt.
Ставят canonical на главную страницу
Так делают, когда хотят «быстро убрать всё лишнее». В итоге поисковик получает сигнал, что все страницы якобы дублируют главную, хотя это не так. Исправление: canonical должен вести на наиболее близкую основную версию, а не просто на homepage.
Удаляют параметры, которые нужны для аналитики
UTM-метки полезны маркетингу. Если вы вырезаете их на уровне всех ссылок без разбора, аналитика ломается. Исправление: очищайте только внутренние ссылки и только те параметры, которые не нужны в конкретном контексте.
Не проверяют пагинацию архивов
Страницы 2, 3, 4 архивов — не всегда дубли. Если у вас большой блог, пагинация может быть нормальной частью структуры. Исправление: не закрывайте её автоматически, сначала проверьте, как она индексируется и есть ли на ней полезный контент.
Практические советы по безопасности и производительности
Если вы правите canonical, фильтры и URL-обработку кодом, не вносите изменения прямо в родительскую тему. Используйте дочернюю тему или небольшой mu-plugin. Так правки не слетят после обновления.
Перед массовыми изменениями сделайте резервную копию базы и файлов. Особенно если собираетесь менять генерацию ссылок в шаблонах, потому что ошибка в функции может сломать навигацию по всему сайту.
Ещё один практический момент: не пытайтесь лечить дубли тяжёлыми редирект-цепочками на каждый параметр. Это создаёт лишнюю нагрузку и ухудшает скорость обхода. Лучше один раз нормализовать ссылки и мета-теги на стороне WordPress, чем гонять робота через серию 301.
Если на сайте много технических дублей, полезно дополнительно проверить:
- не создаёт ли тема отдельные версии архивов для мобильных и десктопных шаблонов;
- не дублируются ли записи из-за нестандартных таксономий;
- не генерирует ли плагин фильтрации отдельные URL для каждого клика;
- не попадают ли в sitemap служебные страницы и параметры.
В таких задачах помогает не «магическая» настройка, а последовательная чистка источников дублей: ссылки, canonical, robots, sitemap и шаблоны архивов. Тогда индекс становится предсказуемым, а поисковик перестаёт тратить обход на мусорные адреса.