Дубли в WordPress часто появляются не из-за «плохого контента», а из-за штатной логики: архивы тегов, авторов, дат, страницы с параметрами ?replytocom=, ?amp, ?orderby=, пагинация, а иногда и фильтры темы или плагина. В итоге поисковик видит несколько URL с одинаковым или почти одинаковым содержимым и начинает выбирать канонический адрес сам. Это не всегда ломает индексацию, но почти всегда размывает сигналы и усложняет контроль над SEO.
Как понять, что дубли уже есть
Проверять нужно не только через Search Console. Начните с простого: откройте несколько URL, которые отличаются только параметром или типом архива, и сравните заголовок, canonical и индексируемость. Если контент одинаковый, а адреса разные — это уже кандидат на дубль.
Типичные источники дублей в WordPress
- архивы тегов и рубрик, которые повторяют смысл страниц;
- архивы автора и даты на небольших сайтах;
- страницы с параметрами сортировки, фильтрации, поиска;
- комментарийные якоря и параметры вроде
?replytocom=; - служебные версии страниц: AMP, печать, предпросмотр, если они не нужны;
- дубли с www/без www, http/https, со слешем и без — если редиректы настроены криво.
Быстрая диагностика через браузер и консоль
Сначала проверьте HTML-вывод. Для любой страницы откройте исходный код и найдите <link rel="canonical">. Canonical должен указывать на один основной URL, а не на параметризованную версию. Затем сравните заголовки ответа сервера.
curl -I https://example.com/sample-page/
curl -I https://example.com/sample-page/?replytocom=12
curl -I https://example.com/category/news/
Если параметрическая версия отдаёт 200 и индексируется без canonical или с canonical на саму себя, это уже проблема. Если архивы тегов дублируют основные статьи, их обычно проще закрыть от индексации или пересобрать структуру сайта.
Что именно удалять, а что только закрывать
Не все дубли нужно удалять физически. В WordPress часть URL должна остаться доступной для пользователей, но не для индексации. Например, архивы рубрик часто полезны как навигация, а вот архивы автора на сайте с одним редактором обычно не несут ценности. Параметры сортировки и фильтрации почти всегда лучше исключать из индекса, а не удалять страницы как таковые.
| Вариант | Когда подходит | Минус |
|---|---|---|
| Плагин SEO/чистки | Нужно быстро закрыть архивы и параметры без кода | Меньше контроля, возможны лишние настройки |
| Код в теме или mu-plugin | Нужна точечная логика под конкретный сайт | Требует поддержки при обновлениях |
| Комбинированный подход | Есть SEO-плагин, но часть дублей создаёт тема | Нужно следить, чтобы правила не конфликтовали |
Пошаговое решение: сначала каноникал, потом индексация, потом чистка
Лучше идти по порядку. Если сначала закрыть всё подряд, можно случайно убрать полезные страницы из поиска. Если сначала удалить архивы, а потом обнаружить, что они давали трафик, придётся откатывать изменения.
Шаг 1. Настройте canonical на основных шаблонах
Если у вас кастомная тема или шаблон, проверьте, не переопределяет ли он canonical вручную. В большинстве случаев WordPress и SEO-плагин уже выводят корректный тег, но кастомный код может всё сломать.
// Пример: принудительно убрать лишний canonical, если тема выводит его неправильно.
remove_action('wp_head', 'rel_canonical');
add_action('wp_head', function () {
if (is_singular()) {
echo '<link rel="canonical" href="' . esc_url(get_permalink()) . '" />' . "\n";
}
}, 1);
Это не универсальная рекомендация на весь сайт, а пример для случая, когда canonical дублируется или указывает на неправильный адрес. Если SEO-плагин уже управляет canonical, не дублируйте его вывод.
Шаг 2. Закройте архивы, которые не нужны в поиске
На небольших проектах часто достаточно закрыть архивы автора и даты. Делать это можно через SEO-плагин или кодом. Если нужен код, используйте noindex для конкретных типов архивов, а не для всего сайта.
add_filter('wp_robots', function (array $robots) {
if (is_author() || is_date()) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});
Такой подход оставляет ссылки доступными для обхода, но не просит поисковик индексировать сам архив. Для рубрик и тегов решение зависит от структуры сайта: если архивы реально помогают навигации и содержат уникальные описания, их можно оставить открытыми.
Шаг 3. Уберите параметрические дубли
Параметры сортировки и фильтрации часто создают десятки URL с одинаковым контентом. Если они не нужны для SEO, лучше либо не генерировать их в ссылках, либо закрывать от индексации на уровне шаблона.
add_filter('wp_robots', function (array $robots) {
if (!empty($_GET['orderby']) || !empty($_GET['filter']) || !empty($_GET['replytocom'])) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});
Если параметры используются только для интерфейса, а не для отдельного контента, это рабочий компромисс. Но если параметр меняет смысл страницы, например показывает отдельную подборку, сначала проверьте, нужен ли такой URL вообще в индексе.
Шаг 4. Настройте редиректы только там, где есть явный дубль
Не стоит массово редиректить все архивы на главную. Это частая ошибка: вместо решения проблемы сайт получает цепочки редиректов и потерю полезной структуры. Редирект нужен там, где есть устаревший или технический URL, у которого есть очевидный основной адрес.
add_action('template_redirect', function () {
if (isset($_GET['replytocom'])) {
wp_safe_redirect(remove_query_arg('replytocom'), 301);
exit;
}
});
Для параметров комментариев это обычно безопасно. Но для фильтров каталога, поиска или сортировки решение нужно принимать отдельно: иногда лучше оставить страницу доступной, но закрыть её от индексации.
Проверка результата после внедрения
После изменений не ограничивайтесь визуальной проверкой. Нужны три уровня контроля: HTML, ответ сервера и индексация.
- проверьте canonical на основных страницах и архивах;
- откройте параметрические URL и убедитесь, что они не попадают в индекс;
- посмотрите, не появились ли цепочки редиректов;
- сравните отчёт по страницам в Search Console через несколько обходов;
- проверьте, не исчезли ли из выдачи нужные архивы или страницы пагинации.
Для быстрой технической проверки удобно использовать curl и браузерный просмотр исходника. Если есть доступ к логам, посмотрите, как поисковые боты ходят по параметрическим URL после изменений: они должны либо получать 301 на основной адрес, либо видеть корректный noindex.
Частые ошибки и как их исправить
Закрыли слишком много страниц
Иногда после настройки noindex исчезают из поиска рубрики, теги или пагинация, которые реально приносили трафик. Причина обычно в том, что правило написали слишком широко: например, для всех архивов сразу. Исправление простое — сузить условие до конкретных шаблонов.
Сделали редирект на главную вместо основного URL
Это плохая практика для дублей страниц. Поисковик видит несоответствие между старым и новым адресом, а пользователь теряет контекст. Лучше редиректить на ближайший релевантный канонический URL или просто закрыть страницу от индексации.
Canonical конфликтует с SEO-плагином
Если в коде темы и в плагине выводится два canonical, поисковик может проигнорировать оба. Проверьте исходный код страницы и оставьте только один источник. Обычно это либо SEO-плагин, либо собственный код, но не оба сразу.
Параметры остались в внутренних ссылках
Даже если URL закрыт от индексации, он продолжит расходовать краулинговый бюджет, если на него ведут внутренние ссылки. Проверьте меню, фильтры, кнопки сортировки и хлебные крошки. Иногда проблема не в индексации, а в шаблоне, который генерирует лишние ссылки.
Что делать, если дубли создаёт тема или плагин
Если источник дублей — не WordPress как таковой, а конкретный плагин, сначала отключите только его часть функциональности. Например, некоторые плагины добавляют собственные архивы, страницы автора или параметры сортировки. В таких случаях безопаснее убрать лишний шаблон или фильтр, чем пытаться «лечить» всё robots-метатегами.
Для сайтов, где важна системная чистка технических дублей, иногда удобнее использовать инструменты вроде Clearfy Pro, если он уже есть в стеке и вы понимаете, какие именно настройки включаете. Но даже в этом случае проверка canonical, редиректов и индексации остаётся обязательной: плагин не заменяет аудит.
Мини-чек-лист перед публикацией изменений
- основные страницы отдают один canonical;
- архивы, которые не нужны в поиске, помечены
noindex, follow; - параметрические URL не индексируются и не плодятся во внутренних ссылках;
- редиректы ведут на релевантный основной адрес, а не на главную;
- в исходном коде нет двух источников canonical;
- после правок не сломались пагинация и навигация по рубрикам.
Если после внедрения в Search Console всё ещё появляются новые дубли, ищите не только в шаблонах, но и в генерации ссылок: меню, виджеты, фильтры, блоки похожих материалов и внутренний поиск часто создают проблему незаметно.