Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелочей: параметры в URL, страницы пагинации, сортировки, фильтры, архивы тегов и служебные шаблоны. На сайте это быстро превращается в размывание индекса, лишнюю нагрузку на краулинг и странные сигналы для поисковиков.
Если задача не в том, чтобы «закрыть всё подряд», а в том, чтобы оставить в индексе только полезные URL, нужен точный разбор: какие страницы реально дублируют контент, какие должны оставаться доступными, а какие лучше отдать под noindex или каноникал.
Как понять, что у вас именно дубли, а не просто много страниц
Сначала проверьте не количество URL, а их содержимое и статус индексации. Один и тот же материал может открываться как:
- основная запись без параметров;
- страница с UTM или другими query string;
- архив категории с тем же фрагментом контента;
- страница пагинации архива;
- вариант сортировки или фильтра, если они есть в теме или плагине.
Диагностика обычно начинается с поиска по сайту и в Search Console. Если в индексе есть URL вида ?utm_, ?sort=, ?filter=, /page/2/ и они показывают почти тот же контент, это уже рабочий сигнал, а не гипотеза.
Что смотреть в первую очередь
- отчёт по страницам в Google Search Console;
- канонические URL в исходном коде;
- мета-тег
robotsна архивных и параметрических страницах; - наличие дублей в XML sitemap;
- логика генерации ссылок в теме и плагинах.
Если дубли появляются только из-за параметров, не надо трогать сами записи. Обычно достаточно настроить каноникал и запретить индексацию тех вариантов, которые не несут отдельной ценности.
Какие дубли стоит убирать, а какие — оставлять
Не все повторяющиеся URL одинаково вредны. Пагинация архива, например, может быть полезной для обхода контента, а вот страницы с техническими параметрами почти всегда лишние в индексе.
| Тип URL | Что делать | Комментарий |
|---|---|---|
| UTM и рекламные параметры | Каноникал на чистый URL | Контент тот же, индексировать отдельно не нужно |
| Сортировки и фильтры | Чаще noindex,follow или canonical | Зависит от того, создают ли они уникальную страницу |
| Пагинация архивов | Оставить доступной, не ломать обход | Не всегда надо закрывать от индексации |
| Теги и пустые архивы | Проверить ценность, при необходимости закрыть | Особенно если архивы тонкие и дублируют записи |
Если у вас affiliate-сайт, отдельная проблема — параметры трекинга и промежуточные страницы редиректа. Они часто создают мусорные URL, которые не должны конкурировать с основной статьёй или карточкой.
Пошаговое решение: как убрать дубли без поломки сайта
Шаг 1. Нормализуйте канонический URL
Для страниц с параметрами нужно указывать канонический адрес без лишних query string. Если SEO-плагин уже делает это корректно, не дублируйте логику в теме. Если нет — можно добавить фильтр в код темы или мини-плагина.
<?php
add_filter( 'wpseo_canonical', function( $canonical ) {
if ( is_admin() ) {
return $canonical;
}
if ( ! empty( $_GET ) ) {
$clean_url = remove_query_arg( array_keys( $_GET ), home_url( add_query_arg( array(), $GLOBALS['wp']->request ) ) );
return $clean_url;
}
return $canonical;
} );Этот пример не универсален для всех случаев, но показывает принцип: канонический URL должен вести на основную версию страницы. Перед внедрением проверьте, не ломает ли это нужные параметры, например фильтры, которые вы хотите оставить в индексе.
Шаг 2. Закройте технические параметры от индексации
Если параметрические страницы не несут самостоятельной ценности, добавьте noindex,follow на шаблонно повторяющиеся варианты. Делать это лучше точечно, а не на весь сайт.
<?php
add_action( 'wp_head', function() {
if ( is_search() || is_paged() ) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
if ( isset( $_GET['utm_source'] ) || isset( $_GET['utm_medium'] ) || isset( $_GET['utm_campaign'] ) ) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
}, 1 );Такой подход полезен, когда параметры появляются из рекламы, email-рассылок или внутренних переходов. Но если у вас есть отдельные посадочные страницы с параметрами, которые должны индексироваться, их нужно исключить из этой логики.
Шаг 3. Уберите дубли из sitemap
Если XML sitemap содержит архивы, которые вы уже закрыли, поисковик всё равно будет тратить время на их обход. В Yoast SEO, Rank Math и похожих плагинах это обычно настраивается в интерфейсе. Если речь о кастомной генерации карты сайта, исключайте лишние типы записей и архивы на уровне фильтрации.
Проверка простая: откройте sitemap и убедитесь, что там нет URL, которые вы уже пометили как noindex или которые ведут на пустые/служебные страницы.
Шаг 4. Нормализуйте внутренние ссылки
Даже если каноникал настроен, внутренние ссылки на параметры и дубли будут раздувать количество обходов. В шаблонах и блоках лучше всегда выводить чистый URL без трекинговых параметров, если они не нужны для аналитики.
Для ссылок в контенте проверьте:
- кнопки в шаблонах;
- автоматически вставляемые блоки;
- ссылки в меню и виджетах;
- ссылки, которые формируются через фильтры темы.
Как проверить, что решение сработало
После изменений не ограничивайтесь визуальной проверкой. Нужны конкретные признаки, что поисковик видит правильную версию страницы.
- в исходном коде у дублей стоит правильный
canonical; - страницы с параметрами отдают
noindex,follow, если это задумано; - в sitemap нет технических URL;
- в Search Console уменьшается число проиндексированных параметрических страниц;
- основные URL получают больше внутренних ссылок, чем дубли.
Для быстрой проверки можно открыть проблемный URL и посмотреть заголовки ответа и HTML. Если у вас есть доступ к серверу, полезно проверить и HTTP-статус, и итоговый HTML, потому что иногда canonical меняют в шаблоне, а кеш отдаёт старую версию.
Мини-проверка через curl
curl -I "https://example.com/post/?utm_source=test"
curl -s "https://example.com/post/?utm_source=test" | grep -i "canonical\|robots"Если в ответе виден правильный канонический URL и нет лишней индексации, значит базовая логика работает. Дальше уже смотрите, как это отражается в отчётах поисковиков.
Частые ошибки и как их исправить
Закрыли пагинацию целиком
Это частая ошибка: noindex ставят на все страницы /page/2/ и дальше, не проверив структуру сайта. В результате поисковик хуже обходит архивы, а часть контента становится менее доступной. Если пагинация нужна для навигации, не ломайте её без причины.
Сделали canonical на главную вместо чистого URL
Иногда каноникал по ошибке ведёт не на саму статью, а на главную или на категорию. Это уже не борьба с дублями, а потеря сигнала релевантности. Canonical должен указывать на основную версию того же документа, а не на случайную страницу.
Оставили дубли в sitemap
Если URL закрыт от индексации, но всё ещё лежит в sitemap, вы создаёте противоречивые сигналы. Поисковик видит: «не индексировать», но одновременно получает прямую рекомендацию на обход. Это не всегда критично, но точно лишнее.
Пытались решить всё robots.txt
robots.txt полезен для управления обходом, но не заменяет canonical и noindex. Если страница уже попала в индекс, запрет на обход не всегда поможет её убрать. Для дублей это особенно важно: сначала определите, нужен ли URL в индексе, потом выбирайте инструмент.
Что можно улучшить дополнительно: безопасность и производительность
Если на сайте много параметров и архивов, полезно сократить количество лишней генерации страниц. Это не только про SEO, но и про нагрузку на сервер.
- отключите ненужные архивы, если они не дают трафик и только плодят дубли;
- проверьте, не создают ли плагины отдельные страницы фильтров без необходимости;
- убедитесь, что кеш не хранит старые версии canonical и meta robots;
- не вставляйте в шаблоны ручные редиректы без проверки циклов;
- следите, чтобы кастомный код не менял поведение для админки и REST API.
Если вы используете Clearfy Pro, часть задач по чистке дублей и технических страниц можно закрыть через настройки плагина, но перед включением любых опций всё равно проверьте, как они влияют на конкретные типы URL на вашем сайте. Для технической оптимизации это часто безопаснее, чем писать всё с нуля, если сценарий типовой.
Главная идея простая: сначала найдите источник дублей, потом решите, что именно должно остаться в индексе, и только после этого меняйте canonical, robots и sitemap. Тогда вы убираете лишнее без побочных эффектов для нормальных страниц.