Как найти и удалить дубли архивов и страниц пагинации в WordPress

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

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

Когда проблема уже есть: что именно искать

Сначала не трогайте код. Посмотрите, какие URL реально индексируются и где повторяется один и тот же текст. Для WordPress типичный набор проблем выглядит так:

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

Быстрая диагностика без плагинов

Проверьте несколько вещей вручную:

  1. Откройте исходный код страниц архива и пагинации.
  2. Посмотрите, есть ли на второй и последующих страницах уникальный <title> и meta description.
  3. Проверьте, не отдают ли служебные страницы код 200 там, где должны быть закрыты от индексации.
  4. Сравните URL с параметрами: ?replytocom=, ?utm_, ?sort=, ?filter=.

Если у вас стоит SEO-плагин, сначала проверьте его настройки. Часто проблема не в WordPress как таковом, а в том, что архивы автора, даты или теги оставлены открытыми по умолчанию.

Что отключать, а что оставлять: короткое сравнение подходов

ПодходКогда подходитМинус
SEO-плагинНужно быстро закрыть архивы и задать noindex для служебных страницНе убирает причину дубля в шаблоне
Код в теме или мини-плагинеНужно точечно изменить поведение архивов и каноникалТребует аккуратности при обновлениях
КомбинацияНужно и закрыть индексацию, и убрать лишние URL из шаблоновНужно тестировать два слоя сразу

Пошаговое решение: закрываем дубли на уровне WordPress

1. Отключите лишние архивы, если они не нужны

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

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

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

    return $robots;
});

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

2. Уберите индексацию страниц вложений

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

<?php
add_action('template_redirect', function () {
    if (is_attachment()) {
        $parent = wp_get_post_parent_id(get_the_ID());
        if ($parent) {
            wp_safe_redirect(get_permalink($parent), 301);
            exit;
        }

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

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

3. Приведите пагинацию к предсказуемому виду

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

Для архивов можно изменить pre_get_document_title и добавить номер страницы:

<?php
add_filter('pre_get_document_title', function ($title) {
    if (is_paged()) {
        $paged = max(2, (int) get_query_var('paged'));
        $title .= ' — страница ' . $paged;
    }

    return $title;
});

Это не решает все SEO-вопросы, но помогает убрать одинаковые заголовки у страниц пагинации.

4. Закройте мусорные параметры в URL

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

Для типовых параметров вроде replytocom можно убрать их из канонического URL через фильтр get_canonical_url:

<?php
add_filter('get_canonical_url', function ($canonical, $post) {
    if (empty($canonical)) {
        return $canonical;
    }

    $canonical = remove_query_arg(array('replytocom', 'utm_source', 'utm_medium', 'utm_campaign'), $canonical);

    return $canonical;
}, 10, 2);

Если у вас есть собственные фильтры или сортировки, лучше отдельно проверить, не создают ли они десятки URL с одинаковым контентом.

Если дубли рождаются в теме: что править в шаблонах

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

Проверьте:

  • нет ли повторяющегося H1 в шаблоне архива;
  • не выводится ли один и тот же текст в archive.php и category.php;
  • не дублируется ли хлебная крошка в нескольких местах;
  • не вставляет ли плагин SEO одинаковый title и description для всех страниц архива.

Если нужно, вынесите текстовое описание рубрики только на первую страницу архива:

<?php
if (is_category() && !is_paged()) {
    the_archive_description('<div class="archive-description">', '</div>');
}

Это простой способ не размножать один и тот же текст на всех страницах пагинации.

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

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

  • Откройте архив рубрики, страницу 2 и страницу 3.
  • Проверьте, что у них разные заголовки и нет лишнего повторяющегося текста.
  • Убедитесь, что архивы автора и даты отдают noindex, если вы их закрывали.
  • Проверьте, что страницы вложений редиректят на родительскую запись или на главную.
  • Сравните канонический URL в исходном коде и фактический адрес страницы.
  • Прогоните несколько проблемных URL через Google Search Console или аналогичный инструмент проверки URL.

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

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

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

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

Редиректят пагинацию на первую страницу

Это распространённая, но спорная практика. Если у архива есть нормальная пагинация, не нужно отправлять все страницы 2+ на первую. Пользователь потеряет доступ к старым материалам, а поисковик увидит нестабильное поведение URL.

Оставляют дубли в меню и хлебных крошках

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

Меняют только мета-теги, но не шаблон

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

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

Любые правки лучше вносить не в основной файл темы, а в дочернюю тему или небольшой mu-plugin. Так вы не потеряете изменения после обновления. Если правка касается редиректов, обязательно используйте wp_safe_redirect(), а не голый header() без проверки.

Ещё один момент — не плодите тяжёлые проверки в каждом запросе. Если вы добавляете фильтры на wp_robots, template_redirect или pre_get_document_title, держите логику короткой и предсказуемой. Для массовой чистки дублей и служебных страниц иногда удобнее использовать специализированные инструменты вроде Clearfy Pro, если вам нужен именно набор готовых настроек для noindex, архивов и технической чистки. Подробности можно посмотреть на странице плагина.

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

Автоматическая замена контента в WordPress: практическое решение с использованием WPRemark
15.04.2026
Как отключить XML-RPC в WordPress и защитить сайт от атак
27.01.2026
Как сделать автоматическую сборку и оптимизацию CSS в WordPress
22.01.2026
WooCommerce: как автоматически отключить платежи при ошибках биллинга
13.06.2026
Как сделать адаптивные изображения в WordPress
20.02.2026