Как убрать дубли страниц в WordPress: пагинация, фильтры и архивы

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

Ниже — рабочая схема, которая помогает сначала найти источник дублей, потом выбрать способ исправления: через настройки, код или SEO-плагин. Подход рассчитан на обычный сайт на WordPress, без привязки к WooCommerce.

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

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

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

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

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

Сначала проверьте не «есть ли дубли вообще», а какой тип дубля у вас преобладает. Это экономит время и снижает риск лишних правок.

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

  • отчеты Google Search Console по страницам и исключенным URL;
  • список проиндексированных адресов через оператор site:;
  • URL с параметрами в логах или аналитике;
  • наличие одинаковых title и meta description на разных страницах;
  • канонические URL в исходном коде страниц.

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

Быстрая проверка через консоль

Если есть WP-CLI, можно быстро посмотреть, сколько архивов и вложений опубликовано на сайте:

wp post list --post_type=attachment --post_status=inherit --fields=ID,post_title --format=table
wp term list category --fields=term_id,name,slug,count --format=table
wp term list post_tag --fields=term_id,name,slug,count --format=table

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

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

Удобнее идти от наиболее безопасных изменений к более жестким. Сначала убираем технический шум, потом — спорные архивы.

Шаг 1. Приведите к одному виду базовый URL

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

После этого убедитесь, что в Настройки → Общие адрес WordPress и адрес сайта совпадают с выбранной канонической версией.

Шаг 2. Закройте страницы вложений

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

Для редиректа вложений на родительскую запись можно использовать такой код в functions.php дочерней темы или в небольшом плагине:

add_action('template_redirect', function () {
    if (is_attachment()) {
        global $post;

        if ($post && !empty($post->post_parent)) {
            wp_redirect(get_permalink($post->post_parent), 301);
            exit;
        }

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

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

Шаг 3. Ограничьте индексирование тегов и слабых архивов

Теги в WordPress часто создаются «на автомате» и потом дублируют рубрики. Если теговые архивы не несут самостоятельной пользы, их лучше закрыть от индексации или вообще отключить вывод в sitemap.

Через код можно добавить noindex,follow для тегов и архивов автора:

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

    return $robots;
});

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

Шаг 4. Уберите из индекса параметры URL

Параметры сортировки, поиска и фильтрации часто создают бесконечное число адресов. Для обычного контентного сайта они почти всегда лишние.

Если параметры используются только для фронтенд-логики и не должны индексироваться, можно отдать для них noindex через условие по $_GET:

add_filter('wp_robots', function (array $robots) {
    $blocked_params = ['sort', 'filter', 'view', 'replytocom'];

    foreach ($blocked_params as $param) {
        if (isset($_GET[$param])) {
            $robots['noindex'] = true;
            $robots['follow'] = true;
            break;
        }
    }

    return $robots;
});

Для replytocom это особенно полезно: WordPress и так может плодить URL с этим параметром в комментариях.

Шаг 5. Настройте каноникал для пагинации и архивов

Не всегда нужно ставить noindex. Иногда достаточно корректного canonical. Например, если у вас пагинация рубрики, страницы /category/news/page/2/ должны указывать на себя, а не на первую страницу архива. Иначе поисковик может игнорировать вторую и третью страницы.

Большинство нормальных SEO-плагинов это делают автоматически. Если вы пишете логику сами, не подменяйте canonical вручную без необходимости. Сначала проверьте, что тема не выводит дублирующий тег <link rel="canonical"> дважды.

Сравнение подходов: плагин, код или ручная настройка

ПодходКогда подходитПлюсыМинусы
SEO-плагинНужно быстро закрыть теги, архивы, вложения, параметрыМеньше ручного кода, проще поддержкаНе всегда гибко для нестандартных правил
Код в теме или мини-плагинеНужны точечные правила для конкретных URLПолный контроль, нет лишнего интерфейсаНужно тестировать после обновлений
Ручная настройка на сервереПроблема в www/HTTPS, редиректах, кэшеРешает корень проблемыТребует доступа к серверу и аккуратности

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

Как проверить, что исправление сработало

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

  1. Откройте проблемный URL и посмотрите исходный код: есть ли noindex, корректный canonical, нет ли лишних мета-тегов.
  2. Проверьте ответ сервера через curl -I или инструменты браузера: редирект должен быть 301, а не 302.
  3. В Search Console отправьте страницу на переобход и посмотрите, как она классифицируется через несколько дней.

Пример быстрой проверки canonical и robots с консоли:

curl -s https://example.com/category/news/ | grep -iE 'canonical|robots'
curl -I https://example.com/wp-content/uploads/2024/01/image.jpg

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

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

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

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

Закрывают URL в robots.txt вместо noindex

Если страница уже известна поисковику, запрет в robots.txt не гарантирует ее удаление из индекса. Для удаления дубля обычно нужен noindex или 301-редирект на канонический адрес.

Оставляют дубли из-за плагина кэша

Некоторые плагины кэширования могут сохранять старые мета-теги или canonical после изменения настроек. После правок обязательно очищайте кэш страницы, объектный кэш и CDN, если он есть.

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

Это допустимо не всегда. Если вложение связано с конкретной записью, лучше редиректить на родителя. На главную стоит отправлять только «сиротские» вложения без parent.

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

Любые изменения в functions.php лучше делать не в основной теме, а в дочерней или в маленьком MU-плагине. Тогда обновление темы не затрет правки. Перед изменениями сохраните резервную копию и проверьте сайт в staging-окружении, если оно есть.

  • не добавляйте несколько одинаковых фильтров wp_robots в разных местах;
  • не дублируйте canonical в теме и SEO-плагине одновременно;
  • не закрывайте от индексации страницы, которые приносят переходы из поиска;
  • после массовых правок очищайте кэш и проверяйте исходный HTML, а не только визуальный вид страницы;
  • если используете плагины для SEO-очистки, проверяйте, не отключили ли они нужные системные страницы случайно.

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

Как убрать дубли страниц в WordPress: пагинация, фильтры и архивы
03.09.2026