Если сайт на WordPress начал плодить одинаковые или почти одинаковые страницы, поисковик быстро тратит краулинговый бюджет на мусорные URL. Чаще всего это теги, архивы по датам, авторы, пагинация, страницы вложений и служебные результаты поиска. Проблема не в самом наличии таких страниц, а в том, что они индексируются без контроля и конкурируют с основным контентом.
Ниже — рабочая схема: как диагностировать дубли, что закрывать через noindex, что лучше вообще удалить из выдачи и как проверить, что после правок сайт не потерял важные страницы.
Что именно считать дублем в WordPress
В WordPress дубли часто выглядят не как буквальная копия текста, а как несколько URL с одинаковой или почти одинаковой смысловой нагрузкой. Например, одна и та же статья доступна через основную запись, архив рубрики, архив тега, страницу автора и пагинацию. Для пользователя это нормально, для индекса — лишний шум.
Типовые источники дублей
- архивы тегов, если теги используются без строгой структуры;
- архивы авторов на сайтах с одним автором;
- архивы по датам, если они не несут ценности;
- страницы вложений медиафайлов;
- страницы поиска вида
?s=; - пагинация архивов, если она индексируется без необходимости;
- страницы с параметрами сортировки и фильтров, если они есть в теме или плагинах.
Самая частая ошибка — закрывать всё подряд, не проверив, какие архивы реально приводят трафик. Если теговая страница ранжируется по коммерческому или информационному запросу, её нельзя слепо отправлять в noindex.
Диагностика: где искать проблему
Начните не с правок, а с проверки того, что уже попало в индекс и что поисковик считает важным. Это экономит время и помогает не ломать полезные страницы.
Что смотреть в первую очередь
- Google Search Console: отчёт по индексированию страниц и исключённым URL;
- поисковую выдачу по оператору
site:example.comс фильтром по типам страниц; - логи краулинга, если они доступны;
- список URL в sitemap.xml и отдельные карты для записей, страниц, таксономий;
- страницы с тонким контентом: теги без записей, архивы с 1–2 постами, пустые авторы.
Если у вас есть доступ к серверу, полезно быстро посмотреть, какие URL чаще всего запрашивает бот. Иногда проблема не в индексации, а в том, что робот постоянно ходит по бесконечным архивам и параметрам.
# Пример: посмотреть частые запросы Googlebot в access.log (если лог в формате combined и есть user-agent в конце строки)
grep -i "Googlebot" access.log | awk '{print $7}' | sort | uniq -c | sort -nr | head -30Это не заменяет полноценный анализ, но быстро показывает, какие разделы сайта бот посещает чаще всего. Если в топе оказываются теги, архивы дат или страницы поиска, это уже сигнал к настройке.
Что закрывать, а что оставлять
Здесь важен не универсальный рецепт, а логика. Закрывать нужно не всё, что выглядит как архив, а только то, что не несёт самостоятельной ценности и не должно конкурировать с основными страницами.
| Вариант | Когда подходит | Минус |
|---|---|---|
| Плагин SEO/чистки | Нужно быстро закрыть типовые архивы без кода | Меньше контроля над нестандартными сценариями |
| Код в теме или mu-plugin | Нужна точечная логика для конкретных таксономий и архивов | Требует аккуратного тестирования после обновлений |
| Удаление из sitemap и 301 | Страница не должна существовать как отдельная сущность | Нужно убедиться, что нет внутренних ссылок и потерь трафика |
Если задача типовая, проще и безопаснее использовать настройки SEO-плагина. Если логика нестандартная, лучше вынести её в отдельный мини-плагин или mu-plugin, чтобы не потерять изменения при смене темы.
Пошаговое решение через код
Ниже пример для случая, когда нужно закрыть от индексации архивы тегов, авторов и дат, а также страницы поиска. Это не удаляет страницы из сайта, а только даёт поисковику сигнал не включать их в индекс.
<?php
/**
* Plugin Name: WPBlock Noindex Archives
*/
add_filter('wp_robots', function (array $robots) {
if (is_tag() || is_author() || is_date() || is_search()) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});Этот вариант опирается на стандартный фильтр wp_robots, который WordPress использует для формирования robots meta. Он подходит для большинства современных установок и не требует вмешательства в шаблоны.
Если нужно закрыть только часть тегов
Иногда теги полезны, но только если они заполнены и ведут на тематические подборки. Тогда можно закрывать пустые или слабые теги выборочно.
<?php
add_filter('wp_robots', function (array $robots) {
if (is_tag()) {
$term = get_queried_object();
if ($term instanceof WP_Term) {
$count = (int) $term->count;
if ($count < 3) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
}
}
return $robots;
});Здесь порог 3 — не магическое число, а пример. Его нужно подбирать под структуру сайта. На новостном ресурсе порог может быть выше, на узком экспертном блоге — ниже.
Настройка через SEO-плагин без кода
Если не хочется поддерживать свой код, проще использовать настройки SEO-плагина. Важно только не ограничиться одной галочкой и не забыть про sitemap, canonical и внутренние ссылки.
Что обычно нужно проверить в настройках:
- индексацию архивов тегов;
- индексацию архивов авторов;
- индексацию архивов по датам;
- страницы вложений;
- страницы поиска;
- наличие canonical на архивных страницах;
- исключение пустых таксономий из sitemap.
Если используете Clearfy Pro, у него как раз есть инструменты для удаления дублей и чистки сайта. Это удобно, когда нужно быстро отключить лишние архивы и служебные страницы без ручной правки шаблонов. Но даже в этом случае лучше проверить, какие именно типы страниц были затронуты, а не включать всё подряд.
Ссылка на продукт, если нужен ориентир: Clearfy Pro.
Проверка результата после внедрения
После правок не стоит сразу считать задачу закрытой. Нужно убедиться, что поисковик видит нужные сигналы и не потерял важные страницы.
Чек-лист проверки
- открыть несколько архивов и проверить наличие
<meta name="robots" content="noindex,follow">или эквивалентного заголовка; - убедиться, что основные записи и страницы не получили
noindexслучайно; - проверить sitemap.xml: там не должно быть закрытых или пустых архивов;
- посмотреть отчёт в Search Console через несколько дней после переобхода;
- проверить внутренние ссылки на страницы, которые вы закрыли, чтобы не создавать лишние переходы;
- сравнить количество страниц в индексе до и после, но не делать выводы по одному дню.
Если вы меняли только robots meta, а URL всё равно остаются в индексе, это нормально: поисковику нужно время на переобход. Если же страница продолжает активно попадать в поиск, проверьте, не ссылается ли на неё sitemap, меню, хлебные крошки или блоки похожих материалов.
Частые ошибки и как их исправить
Закрыли архив, но оставили его в sitemap
Это частая несогласованность. Поисковик получает сигнал noindex, но одновременно видит URL в карте сайта. В итоге обход идёт дольше, а поведение становится менее предсказуемым. Решение простое: если страница закрыта от индексации, уберите её из sitemap.
Поставили noindex на всё подряд
Иногда после установки SEO-плагина закрывают и теги, и рубрики, и авторов, и пагинацию, а потом удивляются падению видимости. Проблема не в noindex как таковом, а в отсутствии отбора. Оставляйте открытыми те архивы, которые реально отвечают на запрос пользователя.
Использовали robots.txt вместо noindex
Disallow в robots.txt не равен noindex. Если URL уже известен поисковику, он может остаться в индексе без содержимого. Для удаления дублей чаще нужен именно noindex или редирект, а не только запрет обхода.
Удалили страницу, но не поставили редирект
Если архив или служебная страница больше не нужна, не оставляйте её с ошибкой 404 без причины. Для старых URL лучше настроить 301 на ближайший релевантный раздел. Это особенно важно, если на страницу есть внешние ссылки или она уже получала трафик.
Безопасность и производительность
Любая правка, связанная с индексацией, должна быть обратимой. Не вносите её прямо в functions.php основной темы, если у вас нет дисциплины по деплою. Лучше использовать отдельный мини-плагин или mu-plugin: так настройка не исчезнет после обновления темы.
Ещё один практический момент: не генерируйте лишнюю логику на каждом запросе. Проверка is_tag(), is_author() и похожих условных тегов дёшево обходится, но сложные запросы к базе внутри фильтра wp_robots уже могут быть лишними. Если нужна проверка счётчика термина, лучше ограничить её только нужной таксономией и не делать тяжёлых выборок.
Если на сайте много служебных архивов и дублей, иногда полезнее не точечная правка, а общая чистка структуры: убрать лишние таксономии, сократить число тегов, отключить страницы вложений и привести sitemap к реальному содержимому. Это не косметика, а нормальная техническая гигиена, которая упрощает индексацию и снижает шум в отчётах.