На WordPress проблема с фильтрами обычно выглядит одинаково: в индексе появляются десятки и сотни URL с параметрами ?filter=, ?sort=, ?price=, ?orderby= или похожими комбинациями. Часть таких страниц полезна, но чаще это мусорные дубли, которые размывают краулинговый бюджет и мешают поисковику понять, какая версия страницы основная.
Если закрыть всё подряд, можно потерять посадочные страницы, которые реально собирают трафик. Если не закрывать ничего — индекс быстро засоряется. Ниже разберём рабочую схему: как диагностировать проблему, какие URL закрывать, чем отличается noindex от canonical, и как проверить, что после правок ничего не сломалось.
Как понять, что фильтры уже создают SEO-проблему
Сначала стоит посмотреть не на плагины, а на фактические URL в индексе и в логике сайта. Проблема почти всегда проявляется в одном из трёх сценариев:
- в поиске находятся страницы с параметрами, которые не должны ранжироваться;
- в отчётах краулера много дублей с разными сортировками и фильтрами;
- основные категории теряют видимость, потому что поисковик выбирает не ту версию страницы.
Что проверить руками
- поиск по сайту в Google с оператором
site:example.ru inurl:?; - отчёт «Страницы» в Google Search Console;
- краул сайта через Screaming Frog или аналог и фильтр по URL с параметрами;
- логи сервера, если фильтры генерируют много внутренних переходов и ботовых запросов.
Если у вас интернет-магазин, каталог или большой архив записей, особенно внимательно смотрите на страницы сортировки и фильтрации. Они часто создаются автоматически и не несут самостоятельной ценности для поиска.
Какие страницы фильтра закрывать, а какие оставить
Здесь важен не сам параметр, а смысл страницы. Один и тот же URL-паттерн может быть мусорным дублем или полезной посадочной страницей. Поэтому сначала разделите фильтры на две группы.
| Тип URL | Что делать | Почему |
|---|---|---|
| Сортировка, пагинация фильтра, служебные параметры | noindex,follow или каноникал на основную категорию | Не нужны как отдельные страницы в поиске |
| Фильтр с низкой ценностью и множеством комбинаций | Закрыть от индексации и убрать из sitemap | Порождает дубли и размывает релевантность |
| Фильтр, который стал посадочной страницей под спрос | Оставить в индексе, добавить уникальный контент и self-canonical | Такая страница может собирать целевой трафик |
Если фильтр уже используется как SEO-страница, не прячьте его автоматически. Сначала проверьте спрос, уникальность контента и отсутствие бесконечных комбинаций параметров.
Пошаговое решение: как закрыть фильтры в WordPress
Есть три рабочих подхода: плагин, код в теме или комбинация обоих. Для большинства проектов удобнее начать с плагина, а точечные правила добрать кодом.
Вариант 1. Закрыть через SEO-плагин
Если у вас уже стоит SEO-плагин, проверьте, умеет ли он задавать noindex для архивов, параметров и таксономий. Важно не просто поставить галочку, а убедиться, что:
- страница получает мета-тег
<meta name="robots" content="noindex,follow">; - канонический URL указывает на основную категорию или архив без параметров;
- страница не попадает в XML-карту сайта.
Если плагин умеет чистить технические дубли, это обычно удобнее, чем собирать всё вручную. Например, в Clearfy Pro есть инструменты для работы с дублями и технической чисткой сайта, но применять их всё равно нужно выборочно, а не «всё выключить».
Вариант 2. Добавить noindex для параметров кодом
Если нужен точечный контроль, можно добавить правило в functions.php дочерней темы или в небольшой mu-plugin. Ниже пример для страниц, где присутствуют конкретные GET-параметры.
<?php
add_action('wp_head', function () {
if (is_admin()) {
return;
}
$blocked_params = array('sort', 'orderby', 'filter', 'price');
foreach ($blocked_params as $param) {
if (isset($_GET[$param])) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
break;
}
}
}, 1);
Это не универсальное решение для всех проектов, но для простых каталогов и архивов работает предсказуемо. Если параметры используются только для сортировки и фасетной навигации, такой подход часто достаточно безопасен.
Вариант 3. Задать canonical на основную страницу
Если фильтр не должен ранжироваться отдельно, canonical помогает поисковику понять, какая версия главная. Но canonical не заменяет noindex во всех случаях: если параметров много и они создают мусорные URL, лучше использовать оба механизма осмысленно.
<?php
add_filter('wpseo_canonical', function ($canonical) {
if (isset($_GET['sort']) || isset($_GET['filter']) || isset($_GET['orderby'])) {
return get_permalink(get_queried_object_id());
}
return $canonical;
});
Этот пример рассчитан на сайты, где уже используется Yoast SEO. Если у вас другой SEO-плагин, ищите его фильтр canonical, а не копируйте код вслепую.
Что делать с sitemap и внутренними ссылками
Закрыть страницу от индексации мало. Если она продолжает попадать в sitemap или на неё активно ведут внутренние ссылки, поисковик всё равно будет тратить на неё ресурсы.
- уберите технические URL из XML-карты сайта;
- не добавляйте фильтры в хлебные крошки и блоки похожих страниц;
- если фильтр создаётся JS-скриптом, проверьте, не генерирует ли он лишние ссылки в HTML;
- для пагинации и сортировки используйте только те ссылки, которые реально нужны пользователю.
Если фильтр нужен для UX, но не нужен для SEO, ссылка может оставаться в интерфейсе, однако сам URL должен быть закрыт от индексации и не должен становиться отдельной посадочной страницей.
Как проверить, что решение сработало
Проверка должна быть не формальной, а технической. После внедрения откройте несколько проблемных URL и проверьте три вещи.
- В исходном коде есть
noindex,followили нужный canonical. - Страница не попадает в sitemap.
- В Search Console URL постепенно уходит из индекса или получает статус, соответствующий выбранной стратегии.
Дополнительно можно проверить ответ сервера и HTML через curl:
curl -I "https://example.ru/category/shoes/?sort=price"
curl -s "https://example.ru/category/shoes/?sort=price" | grep -i robotsЕсли в заголовках или HTML нет ожидаемого noindex, значит правило не сработало или срабатывает не на всех сценариях.
Частые ошибки и как их исправить
Закрыли слишком много страниц
Это самая частая ошибка. Например, под фильтр попали не только служебные параметры, но и полезные посадочные страницы. Исправление простое: составьте список параметров, которые действительно создают дубли, и исключите из правила страницы с уникальным контентом и поисковым спросом.
Поставили canonical, но оставили URL в sitemap
Поисковик получает противоречивые сигналы: одна часть сайта говорит, что страница важна, другая — что это дубль. В такой ситуации canonical может игнорироваться. Уберите технический URL из карты сайта и проверьте внутренние ссылки.
Использовали только robots.txt
Disallow в robots.txt не решает задачу индексации полностью. Если URL уже известен поисковику, он может оставаться в индексе без содержимого. Для дублей и фильтров обычно нужен именно noindex или каноникал, а не только запрет обхода.
Сломали фильтрацию для пользователей
Иногда разработчик закрывает URL, но одновременно ломает JS-логику фильтра. В результате пользователь не может выбрать параметры, а SEO-проблема остаётся. После правок обязательно проверьте интерфейс в браузере и на мобильной версии.
Безопасность и производительность: что не стоит игнорировать
Фильтры — это не только SEO, но и нагрузка на сервер. Большое количество комбинаций параметров может создавать лишние запросы к базе и увеличивать время генерации страниц. Если сайт крупный, имеет смысл:
- ограничить число одновременно применяемых фильтров;
- кэшировать результаты там, где это возможно;
- не генерировать индексируемые страницы для каждой случайной комбинации параметров;
- проверить, не создаёт ли фильтр бесконечные URL с одинаковым контентом.
Если нужен более системный подход к технической чистке WordPress, иногда удобнее использовать набор инструментов, который закрывает сразу несколько задач: дубли, служебные страницы, лишние элементы разметки и технические настройки. Но даже в этом случае сначала нужно понять, какие URL реально мешают индексации, а какие приносят трафик.
Когда лучше оставить фильтр открытым
Не каждый URL с параметром нужно закрывать. Если страница фильтра:
- имеет стабильный спрос;
- содержит уникальный набор товаров или материалов;
- может быть описана отдельным текстом;
- не плодит десятки бесполезных комбинаций;
то её можно оставить в индексе и оформить как полноценную посадочную страницу. В этом случае важнее контент, структура и каноникал, чем механическое закрытие всех параметров подряд.
Практический ориентир простой: если URL полезен только для навигации — закрывайте. Если он помогает пользователю и может ранжироваться по запросу — оформляйте как отдельную страницу и контролируйте её как обычный контентный раздел.