В WordPress дубли чаще всего появляются не из-за «плохого SEO», а из-за штатной логики: архивы, теги, авторы, пагинация, параметры сортировки, страницы поиска и технические URL. Если такие страницы попадают в индекс, поисковик начинает тратить обход на мусорные адреса, а в отчётах Search Console растёт количество «Просканировано, но не проиндексировано» и похожих сигналов.
Задача здесь не в том, чтобы закрыть всё подряд, а в том, чтобы оставить в индексе только те страницы, которые реально несут трафик и ценность. Для этого обычно комбинируют noindex, каноникал и аккуратные правила в robots.txt. Полностью полагаться только на один инструмент — типичная ошибка.
Как понять, что у вас именно проблема с дублями
Сначала стоит проверить не абстрактную «индексацию», а конкретные типы URL. В WordPress дубли обычно видны по шаблону адресов:
/tag/...— архивы тегов;/author/...— архивы авторов;/page/2/,/page/3/— пагинация архивов;?s=...— страницы поиска;?replytocom=...— служебные параметры комментариев;- URL с UTM и другими query-параметрами;
- страницы с одинаковым контентом, но разными путями из-за категорий и хлебных крошек.
Проверка простая: откройте в Search Console отчёт по страницам и посмотрите, какие URL индексируются или сканируются без пользы. Если у вас нет Search Console под рукой, используйте поиск по сайту и ручную проверку исходного кода страницы: в <head> должен быть канонический URL, а для закрытых архивов — noindex.
Что считать нормой, а что — сигналом к правке
Нормально, когда в индексе остаются:
- главная;
- страницы записей;
- важные рубрики;
- посадочные страницы;
- полезные архивы, если они реально приводят трафик.
Подозрительно, когда в выдаче всплывают:
- страницы поиска;
- пустые или почти пустые теги;
- архивы авторов на сайте с одним автором;
- страницы пагинации, которые дублируют первые листы архива;
- URL с параметрами, которые меняют только сортировку или вид.
Что закрывать через noindex, а что — через robots.txt
Это важный момент: robots.txt не удаляет страницу из индекса, он только ограничивает обход. Если URL уже попал в индекс, одного запрета в robots часто недостаточно. Для удаления из выдачи нужен noindex на самой странице или корректный каноникал, а иногда и оба инструмента вместе.
| Подход | Когда использовать | Минус |
|---|---|---|
noindex | Для архивов, поиска, служебных страниц | Страница остаётся доступной для обхода |
robots.txt | Для экономии crawl budget на технических URL | Не гарантирует удаление из индекса |
| Каноникал | Для дублей одного и того же контента | Не всегда срабатывает как жёсткий запрет |
На практике для WordPress чаще всего делают так: архивы тегов и авторов — noindex, follow; страницы поиска — noindex, nofollow или закрытие через плагин/код; технические параметры и служебные пути — отдельные правила в robots.txt.
Пошаговое решение: как убрать дубли без поломки сайта
Шаг 1. Определите, какие архивы вам вообще нужны
Если у сайта один автор, архив автора почти всегда бесполезен. Если теги используются хаотично и дублируют рубрики, их тоже лучше закрыть от индексации. Но не надо рубить всё подряд: иногда теги дают хороший long-tail-трафик, а рубрики — основную структуру сайта.
Минимальный чек-лист для ревизии:
- есть ли у тегов уникальные описания и реальная навигационная ценность;
- нужны ли архивы авторов на многопользовательском сайте;
- не дублируют ли рубрики друг друга по смыслу;
- есть ли страницы поиска в индексе;
- не создают ли параметры URL бесконечные комбинации.
Шаг 2. Добавьте noindex для ненужных архивов
Если вы не хотите ставить SEO-плагин, можно сделать это кодом. Для архивов тегов и авторов в functions.php или в мини-плагине используйте фильтр wp_robots. Это штатный способ в современных версиях WordPress.
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_tag() || is_author() || is_search() ) {
$robots['noindex'] = true;
$robots['nofollow'] = true;
}
return $robots;
} );Если вам нужно оставить ссылки для обхода, но убрать страницу из индекса, для архивов можно убрать nofollow и оставить только noindex. Для поиска чаще разумнее оставить и nofollow, потому что поисковые страницы почти никогда не нужны в выдаче.
Шаг 3. Закройте технические URL в robots.txt
В robots.txt имеет смысл закрывать только то, что не должно расходовать обход: служебные параметры, внутренние пути плагинов, страницы предпросмотра, если они доступны по отдельным URL. Пример аккуратного файла:
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /?s=
Disallow: /*?replytocom=
Disallow: /*?utm_
Disallow: /*?sort=
Sitemap: https://example.com/sitemap_index.xmlЗдесь важно не переусердствовать. Если вы запретите в robots.txt то, что должно индексироваться, потом будет сложнее исправить ситуацию. Например, закрывать рубрики или записи через robots.txt — плохая идея, если они уже в поиске и вам нужно убрать их из выдачи.
Шаг 4. Проверьте каноникал на дублирующих страницах
Если одна и та же статья доступна через несколько путей, канонический URL должен указывать на основную версию. В WordPress это обычно делает SEO-плагин, но после кастомных правок или конфликтов тема может выводить неверный rel=canonical.
Проверить можно в исходном коде страницы или через DevTools. На странице должен быть один каноникал, и он должен вести на чистый URL без параметров. Если каноникал указывает на страницу с ?utm= или на архив вместо записи, это уже повод искать конфликт в теме или плагине.
Пример: закрываем архивы тегов и авторов без SEO-плагина
Если у вас нет необходимости в сложной логике, можно ограничиться кодом и не тащить лишний плагин. Ниже пример, который закрывает от индексации теги, авторов и поиск, а также добавляет базовые правила в robots.txt через фильтр robots_txt.
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_tag() || is_author() ) {
$robots['noindex'] = true;
$robots['nofollow'] = true;
}
if ( is_search() ) {
$robots['noindex'] = true;
$robots['nofollow'] = true;
}
return $robots;
} );
add_filter( 'robots_txt', function( $output, $public ) {
$output .= "\nDisallow: /?s=";
$output .= "\nDisallow: /*?replytocom=";
$output .= "\nDisallow: /*?utm_";
return $output;
}, 10, 2 );Этот вариант рабочий, но его нужно тестировать на конкретном сайте. Если у вас уже есть SEO-плагин, не дублируйте его логику кодом без необходимости: можно получить конфликт мета-тегов и непредсказуемый результат.
Как проверить, что решение сработало
Проверка должна быть не «посмотрел страницу и вроде всё ок», а по нескольким признакам сразу.
- Откройте проблемный URL и проверьте исходный код: есть ли
noindexв meta robots. - Проверьте каноникал: он должен вести на основную версию страницы.
- Посмотрите
robots.txtпо адресу/robots.txtи убедитесь, что правила отдаются без ошибок. - В Search Console отправьте URL на проверку и посмотрите, как Google видит страницу.
- Через несколько дней/недель проверьте, уменьшается ли количество дублей в отчётах по индексированию.
Если страница закрыта только через robots.txt, но уже есть в индексе, она может ещё какое-то время отображаться в выдаче. Это нормально: удаление не происходит мгновенно. Поэтому для уже проиндексированных дублей лучше сначала поставить noindex, а потом при необходимости добавить запрет на обход.
Частые ошибки и как их исправить
Закрыли всё в robots.txt и ждёте удаления из поиска
Это самая частая ошибка. Robots не удаляет URL из индекса сам по себе. Если страница уже известна поисковику, нужен noindex или удаление через инструменты Search Console, а robots.txt — только дополнительный слой.
Поставили noindex на важные страницы
Иногда после установки SEO-плагина или правки темы в noindex улетают рубрики, записи или даже главная. Обычно причина в слишком широком условии в коде или неверной настройке шаблонов мета-тегов. Проверяйте не только одну страницу, а несколько типов URL.
Запретили индексацию параметров, которые используются внутри сайта
Если в robots.txt закрыть слишком общий шаблон, можно случайно заблокировать рабочие фильтры, сортировки или AJAX-эндпоинты. Особенно осторожно надо быть с масками вроде /*? — они легко задевают лишнее.
Оставили дубли в sitemap
Если страница закрыта от индексации, но всё ещё попадает в XML-карту сайта, это плохой сигнал. Поисковик получает противоречивые указания. После правок проверьте sitemap и уберите из него всё, что вы не хотите индексировать.
Что делать для безопасности и производительности
Чем меньше мусорных URL вы отдаёте поисковику, тем меньше лишней нагрузки на обход и тем проще поддерживать сайт. Но не стоит превращать оптимизацию в набор жёстких запретов. Сначала определите, какие страницы реально нужны пользователю и поиску, потом уже закрывайте остальное.
Если на сайте много технических дублей, удобно использовать инструменты, которые помогают чистить служебные сущности и управлять SEO-настройками без ручного редактирования шаблонов. Например, в Clearfy Pro есть набор функций для очистки WordPress и управления частью SEO-логики. Но даже с плагином всё равно стоит понимать, какие URL вы закрываете и почему.
Практический ориентир простой: если страница не несёт самостоятельной ценности, не должна ранжироваться и только плодит дубли, её надо либо закрыть от индексации, либо убрать из генерации совсем. Если же страница полезна, но доступна по нескольким адресам, лечите каноникал и структуру URL, а не только robots.txt.