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

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

Где искать проблему

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

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

  • страницы архива с пагинацией: /shop/page/2/, /category/page/3/;
  • URL с параметрами сортировки и фильтрации: ?orderby=price, ?filter_color=red;
  • архивы тегов и рубрик, которые дублируют основной каталог;
  • страницы поиска по сайту;
  • страницы автора, если они не несут самостоятельной ценности.

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

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

Не гадайте по robots.txt. Сначала проверьте фактические URL в поиске и в sitemap. Если в sitemap попадают страницы, которые вы не хотите продвигать, поисковик будет их регулярно обходить.

  1. Откройте XML sitemap и найдите архивы, теги, страницы поиска и URL с параметрами, если они туда попали.
  2. Проверьте исходный код страниц архива: есть ли rel="canonical" и куда он указывает.
  3. Посмотрите, не закрываете ли вы страницу в robots.txt, но при этом оставляете ее в sitemap — это частая ошибка.
  4. Проверьте заголовок ответа и мета-robots через DevTools или curl.
curl -I https://example.com/shop/page/2/

В ответе вам важны два момента: статус страницы и отсутствие случайных редиректов на нерелевантный URL. Если страница отдает 200 и при этом должна быть исключена из индекса, нужно решать это через canonical и meta robots, а не только через robots.txt.

Что делать: рабочая схема без лишних рисков

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

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

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

add_action('wp_head', function () {
    if (is_search() || is_author()) {
        echo '<meta name="robots" content="noindex, follow" />' . "\n";
    }
}, 1);

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

2. Настроить canonical для пагинации

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

add_filter('wpseo_canonical', function ($canonical) {
    if (is_paged()) {
        return $canonical;
    }

    return $canonical;
});

Этот пример намеренно простой: если у вас Yoast SEO, canonical обычно и так формируется корректно. Проблема возникает, когда тема или кастомный код подменяет canonical вручную. Тогда нужно убрать самодельную логику и проверить, что canonical на /page/2/ указывает именно на эту страницу.

3. Убрать параметры сортировки и фильтров из индекса

Параметры вроде ?orderby=price или ?filter_color=red почти всегда создают мусорные URL. Их не нужно продвигать как отдельные страницы, если у вас нет четкой стратегии под каждый фильтр.

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

add_action('wp_head', function () {
    if (!empty($_GET)) {
        $allowed = array('s');
        $keys = array_keys($_GET);
        $has_unwanted_params = count(array_diff($keys, $allowed)) > 0;

        if ($has_unwanted_params) {
            echo '<meta name="robots" content="noindex, follow" />' . "\n";
        }
    }
}, 1);

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

Сравнение подходов

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

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

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

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

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

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

curl -s https://example.com/shop/page/2/ | grep -i -E 'canonical|robots'

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

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

Закрыли URL в robots.txt, но оставили в sitemap

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

Склеили все пагинации в canonical на первую страницу

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

Поставили noindex на все страницы подряд

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

Не учли фильтры, которые создают бесконечные комбинации

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

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

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

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

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

Как автоматизировать создание и удаление черновиков в WordPress с помощью WP-Cron
10.04.2026
Как убрать дубли страниц из XML sitemap в WordPress без поломки индексации
24.08.2026
Как использовать хуки в WordPress: практическое руководство
10.11.2025
Как автоматизировать обновление публикаций в WordPress с помощью WP-Cron
27.02.2026
Как отключить XML-RPC и защитить сайт от brute force в WordPress
06.09.2026
×
-15%
на премиум-тему
Reboot

Создай сайт мечты
на WordPress!

Купить со скидкой »