Как закрыть дубли страниц от фасетной навигации в WordPress

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

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

Как понять, что дубли уже есть

Сначала не трогайте код и robots.txt. Сначала посмотрите, какие URL реально попали в индекс и откуда они взялись. В WordPress дубли чаще всего появляются из-за:

  • параметров фильтрации вроде ?color=red, ?size=m;
  • сортировок вроде ?orderby=price;
  • страниц пагинации с параметрами;
  • поисковых страниц вида ?s=...;
  • дублирующих архивов таксономий и тегов;
  • параметров UTM, если они не отсечены на уровне SEO-плагина или сервера.

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

  • отчёт «Страницы» в Google Search Console;
  • список URL с параметрами в логах сервера или аналитике;
  • site:example.com с параметрами в поиске;
  • исходный код страниц: есть ли на дублях canonical, noindex и не ломается ли пагинация.

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

Что закрывать, а что не трогать

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

Тип URLЧто делатьКомментарий
Фильтры с параметрамиnoindex, follow или canonical на основную категориюЕсли фильтр не несёт самостоятельного спроса
Сортировкиобычно canonical на базовую страницуИндексировать сортировки почти всегда бессмысленно
Поиск по сайтуnoindexПоисковые выдачи редко нужны в индексе
UTM и служебные параметрыне индексировать, не плодить отдельные URLЛучше чистить на уровне каноникализации
Страницы с уникальным спросомоставить индексируемымиЕсли фильтр реально отвечает на отдельный запрос

Если фильтр создаёт полноценную посадочную страницу с уникальным текстом, хлебными крошками и стабильным спросом, её можно оставить в индексе. Но это уже не «технический параметр», а отдельная SEO-страница. Всё остальное лучше сводить к одной канонической версии.

Пошаговое решение: canonical, noindex и robots.txt

Самый безопасный путь — не блокировать всё в robots.txt, а сначала убрать дубли из индекса через noindex и canonical. Robots.txt нужен только там, где вы хотите ограничить обход, но не как основной инструмент борьбы с дублями.

1. Добавьте canonical для страниц с параметрами

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

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

    if (!empty($_GET) && (is_category() || is_tax() || is_post_type_archive())) {
        $canonical = get_pagenum_link(1);
        echo '<link rel="canonical" href="' . esc_url($canonical) . '" />' . "\n";
    }
}, 1);

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

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

Если нужен точечный запрет для страниц поиска и фильтров, можно добавить meta robots через wp_head. Это не замена SEO-плагину, но рабочий вариант для кастомной темы:

<?php
add_action('wp_head', function () {
    if (is_search() || isset($_GET['orderby']) || isset($_GET['filter']) || isset($_GET['s'])) {
        echo '<meta name="robots" content="noindex,follow" />' . "\n";
    }
}, 5);

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

3. Не используйте robots.txt как единственный барьер

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

User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /?s=
Disallow: /*?orderby=
Disallow: /*?filter=

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

Если фильтры генерируются плагином

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

  • отключения индексации параметров;
  • генерации canonical;
  • скрытия фильтров от поисковых роботов;
  • управления URL для сортировок и пагинации.

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

Когда лучше использовать SEO-плагин

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

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

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

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

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

Практический чек-лист:

  • откройте URL с параметром и посмотрите исходный код;
  • проверьте HTTP-ответ через curl -I или DevTools;
  • сравните canonical на основной странице и на дубле;
  • убедитесь, что страница не закрыта случайно через X-Robots-Tag на сервере;
  • посмотрите, не исчезли ли из индекса важные посадочные страницы.
curl -I "https://example.com/category/shoes/?orderby=price"

Если сервер или плагин отдаёт заголовок X-Robots-Tag: noindex, это тоже нужно учитывать. Иногда разработчик ставит meta robots в шаблоне, а на уровне nginx или Apache уже есть другое правило, которое перекрывает его.

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

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

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

Поставили canonical на главную вместо категории

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

Закрыли пагинацию вместе с фильтрами

Пагинация и фильтры — не одно и то же. Если закрыть страницы /page/2/ вместе с параметрами, можно ухудшить обход каталога и потерять часть внутренней перелинковки. Исправление: разделить правила для пагинации и для query string.

Оставили индексируемыми страницы поиска

Поиск по сайту часто даёт тонкие страницы с низкой ценностью. Если они индексируются, это почти всегда лишний шум. Исправление: добавить noindex,follow для is_search() и проверить, что шаблон поиска не создаёт отдельные канонические URL с параметрами.

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

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

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

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

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

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

Как закрыть дубли страниц от фасетной навигации в WordPress
19.09.2026

Расскажем где можно скачать WordPress с официального сайта на русском языке, где скачать и купить премиум плагины и темы на русском.