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

На WordPress дубли чаще всего появляются не из-за «плохого SEO», а из-за штатной логики CMS: архивы, страницы вложений, пагинация, теги, авторы, параметры сортировки, версии с ?replytocom и похожие URL. Если оставить это как есть, поисковик тратит краулинговый бюджет на мусорные адреса, а в отчётах Search Console растёт число страниц без ценности.

Задача здесь не в том, чтобы закрыть всё подряд. Правильный подход — оставить в индексе только те URL, которые реально нужны для трафика и навигации, а остальное либо убрать из индекса, либо склеить canonical-ом, либо запретить к обходу в robots.txt там, где это оправдано.

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

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

Типовые источники дублей

  • страницы вложений медиафайлов вида /attachment/ или отдельные URL изображений;
  • архивы тегов и авторов, если они не несут самостоятельной ценности;
  • страницы пагинации архивов и комментариев;
  • параметры в URL: сортировка, фильтры, UTM, ?replytocom;
  • страницы поиска по сайту;
  • технические страницы плагинов, которые случайно открыты для индексации.

Если сайт небольшой, часть этих URL вообще не нужна в поиске. Если проект контентный, архивы категорий могут быть полезны, а вот теги — нет. Поэтому сначала нужна диагностика, а уже потом массовая правка.

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

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

Что проверить в первую очередь

  • отчёт «Страницы» в Google Search Console: какие URL помечены как дубли, просканированные, но не проиндексированные, или с альтернативным каноническим адресом;
  • поиск по сайту через site:example.ru с конкретными шаблонами URL;
  • наличие canonical в HTML;
  • мета-тег robots на архивных и служебных страницах;
  • редиректы с вложений и старых URL;
  • параметры в адресной строке, которые создают новые страницы без смысла.

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

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

Ниже — рабочая схема, которая обычно даёт предсказуемый результат без лишнего риска. Она не требует «магии» и подходит для большинства сайтов на WordPress.

1. Закройте страницы вложений и сделайте редирект на файл или запись

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

<?php
add_action('template_redirect', function () {
    if (is_attachment()) {
        $parent_id = wp_get_post_parent_id(get_queried_object_id());

        if ($parent_id) {
            wp_redirect(get_permalink($parent_id), 301);
            exit;
        }

        wp_redirect(home_url('/'), 301);
        exit;
    }
});

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

2. Уберите из индекса архивы, которые не дают трафик

Теги, авторы, даты и некоторые таксономии часто создают много тонких страниц. Если они не используются как полноценные точки входа, их лучше закрыть от индексации через noindex, а не через robots.txt. Так поисковик увидит директиву на самой странице.

Для архивов WordPress можно добавить мета-тег через wp_robots:

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

    return $robots;
});

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

3. Нормализуйте параметры URL

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

Для комментариев можно отключить replytocom, если он не нужен:

<?php
add_filter('comment_reply_link', function ($link) {
    return preg_replace('/([?&])replytocom=\d+/', '', $link);
});

Этот пример не универсален для всех тем, но он показывает направление: не лечить симптом в индексе, а убрать источник дубля в генерации ссылок.

4. Проверьте canonical на архивных и служебных страницах

Canonical не заменяет noindex, но помогает, когда у страницы есть несколько адресов. Например, пагинация, сортировка или UTM-параметры могут оставаться доступными, но поисковик должен понимать основной URL.

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

Сравнение подходов: плагин, код или robots.txt

ПодходКогда подходитПлюсМинус
SEO-плагинНужно быстро закрыть архивы, теги, автора, вложенияМеньше ручной работыНужно проверить, что он не конфликтует с темой и другими плагинами
Код в теме или mu-pluginНужна точечная логика под конкретный сайтПолный контрольТребует тестирования после обновлений
robots.txtНужно снизить обход технических URLПросто ограничить crawlНе гарантирует исключение из индекса, если URL уже известен поисковику

Если задача — именно убрать дубли из индекса, robots.txt не должен быть единственным инструментом. Для уже известных поисковику URL надёжнее использовать noindex или редирект.

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

После правок не стоит сразу делать выводы по позициям. Сначала проверьте техническое состояние страниц и только потом смотрите на динамику индексации.

Чек-лист проверки

  • открывается ли нужный URL без цепочек редиректов;
  • возвращает ли страница вложения 301 на родительскую запись или другой ожидаемый адрес;
  • есть ли на закрытых архивах noindex в исходном коде;
  • не пропал ли canonical на важных страницах;
  • не закрыли ли случайно категории, которые дают трафик;
  • не появились ли ошибки 404 после удаления параметров из ссылок;
  • обновились ли данные в Search Console после переобхода важных URL.

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

curl -I https://example.ru/sample-attachment/
curl -I https://example.ru/tag/sample/

Если в ответе есть 301 и нужный конечный адрес, значит редирект работает. Если страница закрыта через noindex, убедитесь, что это именно тот тип страницы, который вы планировали убрать из индекса.

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

Закрыли всё через robots.txt

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

Поставили noindex на важные категории

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

Сделали редирект вложений на главную

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

Не учли конфликт с SEO-плагином

Если плагин уже управляет canonical и robots, а вы добавили свою логику в тему, можно получить дублирующиеся мета-теги или противоречивые директивы. После внедрения всегда проверяйте исходный код страниц и отключайте один из источников логики.

Практические советы по безопасности и производительности

Чем меньше лишних URL генерирует сайт, тем проще ему жить под нагрузкой и тем меньше мусора попадает в обход. Это не только SEO-вопрос, но и вопрос поддержки.

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

Если нужен более системный подход к чистке дублей и технических страниц, в экосистеме WPShop есть Clearfy Pro, который закрывает часть типовых задач по SEO и технической оптимизации WordPress: https://wpshop.ru/plugins/clearfy. Но даже с плагином всё равно стоит проверить, какие именно URL он меняет на вашем сайте, а не полагаться на настройки вслепую.

Главный критерий успеха здесь простой: в индексе остаются только те страницы, которые вы действительно хотите видеть в поиске, а служебные и повторяющиеся URL перестают конкурировать с основным контентом.

Как закрыть дубли страниц WordPress от индексации без поломки SEO
13.08.2026