Дубли в WordPress появляются не только из-за тегов и рубрик. Чаще проблема сидит в пагинации, архивных страницах автора, параметрах фильтрации, версиях с ?replytocom, страницах поиска и технических URL, которые случайно попадают в индекс. Если не разрулить это на уровне каноникализации и индексации, поисковик начинает выбирать не ту страницу, а в отчётах Search Console растёт мусор.
Ниже — рабочая схема: как диагностировать источник дублей, что закрывать через noindex, где нужен canonical, а где лучше вообще убрать генерацию лишних URL из темы или плагина.
Как понять, что у вас именно проблема дублей
Сначала не трогайте метатеги вслепую. В WordPress один и тот же контент может открываться по разным адресам, и не все из них надо закрывать одинаково. Типичные признаки:
- в Google индексируются страницы с параметрами сортировки, фильтров или UTM;
- в выдаче всплывают архивы автора, хотя на сайте один автор;
- одна запись доступна по нескольким URL из-за пагинации комментариев;
- в Search Console есть страницы с пометкой «Дубликат, Google выбрал другой канонический URL»;
- в HTML у разных версий страницы отсутствует или конфликтует
rel="canonical".
Что проверить вручную
Откройте проблемную страницу в нескольких вариантах: с параметром ?amp, ?replytocom, с пагинацией, через архив рубрики, через поиск по сайту. Если контент тот же, а URL разные — это уже кандидат на каноникал или запрет индексации.
Полезно посмотреть исходный код страницы и найти:
<link rel="canonical" href="...">;<meta name="robots" content="noindex,follow">;- нет ли двух разных canonical от темы и SEO-плагина одновременно.
Что закрывать через canonical, а что через noindex
Это ключевой момент. canonical не запрещает обход, он подсказывает поисковику основную версию страницы. noindex говорит не показывать страницу в индексе. Для дублей это разные инструменты.
| Сценарий | Что использовать | Комментарий |
|---|---|---|
| Параметры сортировки и фильтров | canonical на основную страницу | Если параметр не меняет смысл страницы, но создаёт новый URL |
| Архивы автора на сайте с одним автором | noindex | Часто не несут самостоятельной ценности |
| Страницы поиска | noindex | Их почти всегда лучше не индексировать |
| Пагинация комментариев | canonical на запись | Если это техническая версия того же материала |
| Теги с пустым или дублирующимся содержимым | noindex или удаление таксономии | Зависит от структуры сайта |
Если у вас уже стоит SEO-плагин, сначала проверьте его настройки. Часто дубли появляются не потому, что WordPress «плохой», а потому что тема и плагин одновременно выводят разные правила индексации.
Пошаговое решение без лишней магии
1. Уберите конфликтующие canonical
Если тема вручную печатает canonical, а SEO-плагин делает то же самое, поисковик может получить две версии одного тега. В норме canonical должен быть один. В теме его лучше не выводить вручную, если используется SEO-плагин.
Проверка: откройте исходный код и убедитесь, что на странице только один rel="canonical".
2. Закройте служебные страницы от индексации
Для поиска, архивов автора на одноличном сайте и некоторых технических страниц можно добавить noindex через фильтр WordPress. Пример без привязки к конкретному SEO-плагину:
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_search() || is_author() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );Этот вариант работает на уровне ядра WordPress и не зависит от Yoast или Rank Math. Но если SEO-плагин уже управляет robots-мета, проверьте, не перетирает ли он результат.
3. Уберите дубли от комментариев и параметров
Если на сайте есть URL с ?replytocom, они могут плодить мусорные версии страниц. В ряде случаев достаточно отключить пагинацию комментариев в настройках обсуждения или ограничить индексацию таких URL на уровне robots и canonical. Для параметров фильтрации лучше не полагаться только на robots.txt: поисковик может всё равно увидеть URL через внутренние ссылки.
Если параметр не нужен для SEO, лучше не генерировать его в ссылках вообще. Это надёжнее, чем потом закрывать последствия.
4. Проверьте архивы рубрик и тегов
На небольших сайтах теги часто создают десятки почти пустых страниц. Если теговые архивы не дают трафик и не несут отдельной структуры, их лучше закрыть от индексации или удалить совсем. Но не делайте это автоматически для всех сайтов: на контентных проектах рубрики и теги могут быть полноценными посадочными.
Если используете Clearfy Pro, часть таких настроек можно собрать в одном месте: убрать дубли, почистить лишние архивы и технические страницы. Но перед включением любых опций всё равно проверьте, что именно будет закрыто, а что останется в индексе.
Пример: точечная настройка robots для служебных страниц
Если нужно закрыть только часть страниц, а не весь сайт, удобнее добавить условную логику в functions.php дочерней темы или в мини-плагин:
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_search() || is_author() || is_attachment() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );
add_filter( 'get_canonical_url', function( $canonical, $post ) {
if ( is_singular() && $post instanceof WP_Post ) {
return get_permalink( $post );
}
return $canonical;
}, 10, 2 );Второй фильтр нужен только если у вас есть нестандартная логика canonical и вы хотите принудительно вернуть основную ссылку записи. Если сайт работает на обычной теме и SEO-плагине, этот кусок может быть лишним.
Как проверить, что решение сработало
После правок не ограничивайтесь просмотром страницы в браузере. Нужна проверка на нескольких уровнях:
- в исходном коде есть один canonical;
- для служебных страниц выводится
noindex,follow; - внутренние ссылки не ведут на параметрические дубли;
- в Search Console новые URL не появляются как канонические;
- в отчёте по индексированию уменьшается число мусорных страниц, если они были в индексе.
Для быстрой ручной проверки можно открыть страницу и посмотреть заголовки ответа сервера через DevTools или curl:
curl -I https://example.com/sample-post/Ищите не только X-Robots-Tag, но и то, не отдаёт ли сервер редирект на неожиданный URL. Иногда проблема дублей на самом деле начинается с неправильного 301.
Частые ошибки и как их исправить
Два разных canonical на одной странице
Обычно это конфликт темы и SEO-плагина. Оставьте один источник правды. Если плагин уже управляет метатегами, уберите ручной вывод из шаблона.
Закрыли всё через robots.txt
Это частая ошибка. Disallow в robots.txt не убирает URL из индекса, если он уже известен поисковику. Для дублей это слабый инструмент. Используйте его только для обхода, а не как замену noindex.
Поставили noindex на важные посадочные
Так бывает с рубриками, которые реально собирают трафик. Перед массовым закрытием проверьте, есть ли у архива поисковый спрос, входящие ссылки и уникальный контент.
Оставили внутренние ссылки на закрытые URL
Если страница закрыта от индексации, но на неё продолжают вести меню, блоки и хлебные крошки, поисковик всё равно будет её обходить. Это не всегда плохо, но если цель — убрать дубль, лучше убрать и источник ссылок.
Практика по безопасности и производительности
Чем меньше технических дублей генерирует сайт, тем меньше лишней нагрузки на обход и тем чище логика индексации. Это особенно заметно на сайтах с большим числом архивов, фильтров и параметров.
- не плодите параметры в URL без необходимости;
- не держите одновременно несколько SEO-решений, которые управляют canonical и robots;
- проверяйте, не создаёт ли тема отдельные шаблоны для архивов без реальной пользы;
- если используете плагины для чистки дублей, включайте их поэтапно и после каждого шага перепроверяйте HTML-вывод.
Если нужен более широкий набор инструментов для технической чистки WordPress, можно посмотреть Clearfy Pro, но он не отменяет ручную проверку конкретных URL и конфликтов в теме.
Самый надёжный порядок такой: сначала найти источник дубля, потом решить, нужен ли canonical, затем точечно добавить noindex и только после этого смотреть на поведение в Search Console. Если сделать наоборот, можно закрыть не те страницы и получить просадку по нормальным посадочным.