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

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

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

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

Проблема обычно проявляется не в админке, а в поисковой выдаче и отчётах сканирования. Один и тот же текст может открываться по разным адресам: с /page/2/, с параметрами ?amp, ?replytocom=, через архив автора, через теги или через старый URL после смены структуры постоянных ссылок.

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

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

Если у вас есть доступ к Google Search Console, начните с отчёта по страницам и посмотрите, какие URL поисковик считает каноническими, а какие — альтернативными. В логике WordPress это часто важнее, чем количество записей в базе.

Диагностика: где WordPress чаще всего создаёт дубли

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

Источник дубляЧто происходитЧто обычно делать
Архивы категорий и теговОдин и тот же пост доступен через несколько списковОставить только нужные архивы, лишние закрыть noindex или убрать
Параметры URLСоздаются копии страниц с разными параметрамиСтавить canonical, иногда редиректить или игнорировать в индексации
Вложения и медиа-страницыОтдельная страница вложения дублирует изображение или текстРедиректить attachment URL на файл или родительскую запись
ПагинацияСтраницы списка частично повторяют контентЭто нормально, но нужно корректно настроить canonical и индексацию
Старые URL после миграцииОдин контент доступен по старому и новому адресуСделать 301 редирект на новый URL

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

Пошаговое решение: что делать с каждым типом дублей

1. Уберите технические дубли через canonical и редиректы

Если страница полезна пользователю, но существует в нескольких вариантах, не удаляйте её сразу. Сначала укажите поисковику основную версию через canonical. Для старых адресов и явных копий лучше использовать 301 редирект.

Пример редиректа старого URL на новый в functions.php или в небольшом плагине:

<?php
add_action('template_redirect', function () {
    if (is_admin()) {
        return;
    }

    $request_uri = $_SERVER['REQUEST_URI'] ?? '';

    if ($request_uri === '/old-page/' || $request_uri === '/old-page') {
        wp_redirect(home_url('/new-page/'), 301);
        exit;
    }
});

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

2. Закройте служебные страницы от индексации

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

Если вы используете SEO-плагин, настройте noindex для:

  • страниц внутреннего поиска;
  • attachment pages;
  • архивов автора, если на сайте один автор;
  • тегов, если они дублируют категории;
  • служебных таксономий, которые не нужны в поиске.

Если нужно решить задачу кодом, можно добавить заголовок X-Robots-Tag для отдельных шаблонов:

<?php
add_action('template_redirect', function () {
    if (is_search() || is_attachment()) {
        nocache_headers();
        header('X-Robots-Tag: noindex, nofollow', true);
    }
});

Этот вариант не заменяет полноценную SEO-настройку, но помогает в точечных сценариях, когда плагин не покрывает нужный тип страниц.

3. Отключите или пересоберите лишние архивы

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

Практический порядок такой:

  1. оставьте категории как основную навигацию;
  2. теги используйте только там, где они реально помогают фильтровать контент;
  3. удалите пустые и почти пустые теги;
  4. проверьте, не создаёт ли тема отдельные архивы по авторам, форматам записей или кастомным таксономиям без смысла.

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

4. Исправьте дубли от параметров URL

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

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

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

    $parts = wp_parse_url($canonical);
    if (empty($parts['query'])) {
        return $canonical;
    }

    parse_str($parts['query'], $query);
    unset($query['utm_source'], $query['utm_medium'], $query['utm_campaign'], $query['replytocom']);

    $clean = $parts['scheme'] . '://' . $parts['host'] . ($parts['path'] ?? '');
    if (!empty($query)) {
        $clean .= '?' . http_build_query($query);
    }

    return $clean;
}, 10, 2);

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

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

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

  • Откройте проблемный URL и убедитесь, что старый адрес отдаёт 301, а не 200.
  • Проверьте исходный код страницы: canonical должен вести на основную версию.
  • Для закрытых страниц убедитесь, что есть noindex или заголовок X-Robots-Tag.
  • Прогоните сайт через краулер или хотя бы через список URL из Search Console.
  • Сравните количество индексируемых страниц до и после, но не ждите мгновенного пересчёта в поиске.

Быстрая проверка через командную строку:

curl -I https://example.com/old-page/
curl -I https://example.com/new-page/

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

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

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

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

Удаляют дубли без редиректа

Если страница уже была в индексе или на неё вели ссылки, простое удаление создаст 404. Для старых URL почти всегда нужен 301 на релевантную страницу, а не удаление «в никуда».

Путают canonical и редирект

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

Не проверяют тему и плагины после обновления

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

Что делать, если дубли создаёт тема или плагин

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

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

Практический чек-лист перед публикацией изменений

  • Проверить, какие URL дублируют один и тот же контент.
  • Определить, что нужно редиректить, а что только закрыть от индексации.
  • Убедиться, что canonical указывает на основную версию.
  • Проверить, не сломались ли архивы категорий и пагинация.
  • Сделать тестовый обход старых URL через curl или браузер.
  • Сохранить резервную копию перед массовыми изменениями.

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

Правила кэширования в WordPress для разработчиков
01.10.2026
Как создать собственный виджет в WordPress: пошаговое руководство
14.09.2026
Как автоматизировать создание задач из форм в WordPress
14.09.2026
Как закрыть дубли страниц от индексации в WordPress без потери нужного трафика
01.10.2026
Как создать автоматический импорт данных из Google Sheets в WordPress
26.09.2026