Как найти и удалить дубли товаров и страниц в WordPress из-за archive, tag и пагинации

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

Ниже разберём, как быстро найти источник дублей, что можно закрыть от индексации, а что лучше склеить через rel=canonical или редирект. Сразу ориентир: не нужно «рубить всё подряд» через robots.txt. В WordPress это часто ломает обход, но не решает проблему дублей в индексе.

Где обычно появляются дубли в WordPress

Самые частые сценарии предсказуемы:

  • один и тот же пост доступен через несколько архивов: рубрика, тег, дата, автор;
  • страницы пагинации повторяют заголовки и фрагменты контента;
  • страницы вложений медиа индексируются отдельно от основного материала;
  • параметры в URL создают копии: ?replytocom=, ?utm_, сортировка, фильтры;
  • тема или плагин выводят одинаковые блоки на разных типах архивов без уникализации title и meta description.

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

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

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

Проверка через поиск и sitemap

Сначала посмотрите, какие типы URL уже попали в поиск. Для этого полезны запросы вида site:example.com, а также поиск по шаблонам URL: site:example.com inurl:tag, site:example.com inurl:page/, site:example.com inurl:attachment. Если в выдаче всплывают страницы вложений или теги с почти тем же текстом, это уже сигнал.

Дальше откройте XML-карту сайта и проверьте, не попадают ли туда страницы, которые вы не хотите индексировать. Часто проблема в том, что sitemap генерируется автоматически, а настройки индексации в теме и плагинах расходятся.

Проверка заголовков и canonical

Откройте несколько подозрительных URL и сравните:

  • <title>;
  • meta name="robots";
  • link rel="canonical";
  • HTTP-статус ответа;
  • есть ли редирект на основной адрес.

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

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

Если нужно посмотреть, как WordPress формирует canonical и robots на конкретном шаблоне, можно временно вывести значения в лог. Такой способ удобен на staging-сайте или при отладке темы.

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

    if (is_category() || is_tag() || is_archive()) {
        error_log('URL: ' . home_url(add_query_arg([])));
        error_log('Canonical: ' . wp_get_canonical_url());
    }
}, 1);

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

Что делать: пошаговое решение

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

Шаг 1. Закройте от индексации служебные и слабые архивы

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

Вариант через код для темы или мини-плагина:

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

    return $robots;
});

Если используете SEO-плагин, проверьте, не конфликтует ли его вывод robots с этим фильтром. Два разных источника noindex обычно не страшны, а вот противоречивые canonical уже создают путаницу.

Шаг 2. Уберите страницы вложений из индекса

Страницы attachment почти всегда создают лишние URL без пользы. Обычно безопаснее редиректить их на файл или на родительскую запись, если она есть.

<?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;
    }
});

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

Шаг 3. Нормализуйте canonical на архивах и страницах с параметрами

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

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

    return $canonical;
}, 10, 2);

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

Шаг 4. Проверьте архивы рубрик и тегов

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

Практически это решается так:

  • оставить в индексе только те архивы, которые реально нужны;
  • для остальных поставить noindex;
  • уникализировать title и description для важных архивов;
  • не дублировать один и тот же текст-описание в нескольких таксономиях.

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

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

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

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

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

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

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

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

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

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

Поставили canonical на главную

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

Редиректнули страницы с параметрами без разбора

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

Оставили страницы вложений без родителя

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

Чек-лист перед публикацией правок

  • Проверены архивы рубрик, тегов, дат и авторов.
  • Страницы вложений редиректят на родительскую запись или на главную.
  • Canonical не содержит лишних параметров.
  • Закрытые от индексации архивы не попадают в sitemap.
  • Нет цепочек редиректов и 302 там, где нужен 301.
  • После правок проверены исходный код и HTTP-статус нескольких URL.

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

Если вы вносите правки кодом, не редактируйте functions.php на боевом сайте без копии. Лучше вынести логику в небольшой mu-plugin или в отдельный плагин для сайта. Так проще откатить изменения и не потерять их при смене темы.

Ещё один момент: не ставьте тяжёлые плагины только ради одной настройки, если задача точечная. Для чистки дублей и технической SEO-настройки иногда удобнее использовать узкий набор функций, чем перегружать сайт лишним интерфейсом. Если нужен более широкий набор инструментов для удаления дублей, чистки сайта и SEO-обвязки, можно посмотреть Clearfy Pro: https://wpshop.ru/plugins/clearfy?utm_source=wpfinder.ru&utm_medium=article&utm_campaign=kak-najti-i-udalit-dubli-tovarov-i-stranits-v-wordpress-iz-za-archive-tag-i-paginacii.

Если после правок дубли всё ещё появляются, проверьте не тему, а плагины, которые генерируют дополнительные архивы, фильтры или страницы поиска. В WordPress источник дубля часто находится не там, где его сначала ищут.

Как отключить AJAX обновление корзины WooCommerce без потери функциональности
19.05.2026
Оптимизация кэширования в WordPress: практические методы и примеры
12.11.2025
Как сделать автоматический редирект по ролям пользователей в WordPress
02.01.2026
Как создать автоматический импорт видео из YouTube в WordPress
24.01.2026
Как удалить старые вариации продуктов WooCommerce с помощью кода
14.06.2026