Как закрыть дубли страниц от индексации в WordPress

В WordPress дубли чаще всего появляются не из-за «плохого SEO-плагина», а из-за вполне обычных вещей: архивы тегов, страницы авторов, пагинация, параметры в URL, версии для печати, UTM-метки, а иногда и дублирующиеся записи из-за темы или плагина. Проблема в том, что поисковик видит несколько URL с одинаковым или почти одинаковым содержимым и начинает тратить краулинговый бюджет на мусорные адреса.

Если задача не в том, чтобы «закрыть всё подряд», а в том, чтобы убрать именно технические дубли и не сломать индексацию полезных страниц, нужен аккуратный подход: сначала диагностика, потом точечные правила для noindex, canonical и редиректов.

Какие дубли в WordPress встречаются чаще всего

На практике чаще всего всплывают такие сценарии:

  • одна и та же статья открывается с разными параметрами в URL;
  • архивы тегов и рубрик дублируют друг друга по смыслу;
  • страницы автора, даты и поиска индексируются без пользы;
  • пагинация архивов создаёт много слабых страниц;
  • сайт доступен и с www, и без него, или по HTTP и HTTPS;
  • в теме есть шаблоны, которые выводят один и тот же контент в нескольких местах.

Что считать дублем, а что — нормальной страницей

Не каждая похожая страница — проблема. Например, пагинация рубрики нужна пользователю и поисковику, а вот страницы с параметрами сортировки, фильтров или служебных меток обычно не должны конкурировать с основным URL. Поэтому цель не в тотальном запрете индексации, а в разделении полезных и технических адресов.

Диагностика: как понять, что именно индексируется лишнее

Начните с простого списка URL, которые уже попали в индекс или в обход поискового робота. Удобно смотреть:

  • отчёт «Страницы» в Google Search Console;
  • результаты поиска по оператору site:example.com;
  • логи сервера, если нужно понять, какие URL реально запрашивает бот;
  • карты сайта, чтобы увидеть, не попали ли туда служебные адреса.

Если у вас установлен SEO-плагин, проверьте, не создаёт ли он отдельные архивы для тегов, авторов, дат и форматов записей. Часто проблема не в индексации как таковой, а в том, что в sitemap попадают страницы, которые не должны там быть.

Быстрая проверка через код

Если нужно понять, какие параметры прилетают на сайт, можно временно залогировать запросы на уровне WordPress. Это не решение, а способ увидеть картину без догадок:

add_action('template_redirect', function () {
    if (!is_admin() && !empty($_SERVER['QUERY_STRING'])) {
        error_log('QUERY: ' . $_SERVER['REQUEST_URI']);
    }
});

После этого откройте несколько типичных страниц с параметрами, а затем проверьте debug.log. Такой подход помогает увидеть, какие адреса реально создаются пользователями, фильтрами, рекламой или внутренними ссылками.

Пошаговое решение: что закрывать, а что оставлять

Ниже рабочая последовательность, которая обычно даёт предсказуемый результат и не ломает сайт.

  1. Оставьте индексируемыми только те архивы, которые реально нужны для поиска и навигации.
  2. Для служебных страниц выставьте noindex, follow, если они должны открываться пользователю, но не участвовать в поиске.
  3. Для дублей с параметрами используйте канонический URL на основную версию страницы.
  4. Сведите все варианты домена к одному: HTTPS, один хост, один формат слэша.
  5. Уберите из sitemap всё, что не должно индексироваться.

Пример: закрываем архивы автора и даты

Если на сайте нет редакционной необходимости в архивах автора и даты, их часто проще закрыть. В коде это можно сделать через фильтр wp_robots, который WordPress использует для генерации robots-мета:

add_filter('wp_robots', function (array $robots) {
    if (is_author() || is_date() || is_search()) {
        $robots['noindex'] = true;
        $robots['follow'] = true;
    }

    return $robots;
});

Это не редирект и не запрет доступа. Страница остаётся доступной, но поисковику явно сообщается, что индексировать её не нужно.

Пример: каноникал для URL с параметрами

Если на сайте есть фильтры или метки в query string, полезно указывать основную версию страницы как canonical. Делать это лучше точечно, а не переписывать всё подряд:

add_filter('get_canonical_url', function ($canonical, $post) {
    if (is_singular('post') && !empty($_GET['utm_source'])) {
        return get_permalink($post);
    }

    return $canonical;
}, 10, 2);

Здесь логика простая: если на запись пришли только маркетинговые параметры, canonical должен указывать на чистый URL записи. Не стоит использовать этот приём для страниц, где параметры реально меняют контент.

Плагин, код или редирект: что выбрать

Если сайт небольшой и без сложной логики, часть задач можно закрыть SEO-плагином. Если же дубли появляются из-за темы, фильтров или нестандартных шаблонов, без кода не обойтись. Ниже удобное сравнение.

ПодходКогда подходитПлюсыМинусы
SEO-плагинНужно быстро закрыть архивы, теги, авторов, sitemapБыстро настраивается, меньше кодаНе решает проблемы темы и нестандартных URL
Код в теме или плагинеЕсть точечные правила для robots, canonical, архивовГибкость, контроль над логикойНужна проверка после обновлений
Редирект на сервереНадо убрать дубль домена, HTTP, www, старые адресаРаботает до WordPress, экономит обходОшибки в правилах ломают сайт сильнее всего

Если вы используете Clearfy Pro, часть технических дублей можно закрыть через настройки чистки сайта и SEO-опций, но всё равно проверьте итоговый HTML и sitemap. Автоматическая галочка в интерфейсе не заменяет контроль результата. Подробнее: Clearfy Pro.

Проверка результата после внедрения

После изменений не ограничивайтесь просмотром страницы в браузере. Нужно проверить именно то, что видит поисковик.

  • Откройте страницу и посмотрите исходный код: есть ли meta robots с noindex там, где он нужен.
  • Проверьте canonical: он должен указывать на основную версию URL.
  • Убедитесь, что закрытые страницы не попали в sitemap.
  • Прогоните несколько URL через Google Search Console, если сайт уже в индексе.
  • Проверьте редиректы с HTTP на HTTPS и с www на без www или наоборот — в зависимости от выбранного варианта.

Если после правок страница всё ещё индексируется, не спешите добавлять ещё один слой запретов. Сначала проверьте, не ведут ли на неё внутренние ссылки, не лежит ли она в sitemap и не создаёт ли её сам плагин кеша или фильтрации.

Частые ошибки и как их исправить

Ставят noindex на всё подряд

Так часто делают после первой паники из-за дублей. В итоге поисковик перестаёт видеть полезные архивы, а трафик проседает не только у мусорных страниц. Исправление простое: вернуть индексирование там, где страница нужна для навигации или поиска, и закрывать только технические адреса.

Закрывают страницу, но оставляют её в sitemap

Это частая несостыковка. Sitemap должен отражать только те URL, которые вы реально хотите индексировать. Если страница закрыта, уберите её из карты сайта, иначе вы отправляете поисковику противоречивые сигналы.

Путают canonical и redirect

Canonical не убирает дубль из доступа, а лишь подсказывает предпочтительный URL. Если у вас два одинаковых адреса, которые не нужны пользователю, лучше сделать 301-редирект. Canonical полезен, когда адрес должен открываться, но не должен конкурировать с основной страницей.

Ломают пагинацию архивов

Иногда пытаются закрыть все страницы пагинации, а потом теряют часть внутренней перелинковки. Если архив нужен для доступа к старым материалам, не закрывайте его без проверки. Лучше оценить, как он влияет на обход и поведенческие сигналы.

Безопасность и производительность: что учесть

Чем больше правил в .htaccess или в PHP, тем важнее не превращать их в хаос. Держите редиректы в одном месте, документируйте логику и не смешивайте серверные правила с экспериментами в теме. Если меняете canonical и robots кодом, вынесите это в небольшой mu-plugin или в отдельный функциональный плагин, чтобы обновление темы не стерло правки.

Для производительности полезно помнить: чем меньше поисковик обходит мусорных URL, тем меньше лишней нагрузки на сайт. Но не стоит ожидать мгновенного эффекта только от закрытия дублей. Сначала поисковику нужно переобойти страницы, а это занимает время.

Когда стоит остановиться и проверить руками

Если у вас сложная структура категорий, мультиязычность, фильтры или нестандартные шаблоны, не полагайтесь на один универсальный рецепт. В таких проектах лучше пройтись по списку URL вручную и решить по каждому типу страниц: индексировать, закрыть, канонизировать или редиректить. Это скучнее, чем поставить одну галочку, но в WordPress именно такой подход обычно и работает.

⭐⭐⭐⭐⭐