Если в Search Console внезапно растёт число страниц с параметрами, а в индексе появляются почти одинаковые URL, проблема часто не в контенте, а в фильтрах и сортировке. Для WordPress это типичный сценарий: каталог, архив записей, поиск по сайту, страницы с ?orderby=, ?filter=, ?sort= и похожими параметрами начинают плодить дубли.
Сама по себе сортировка не всегда вредна. Вред начинается, когда поисковик видит десятки URL с одинаковым содержимым, разными параметрами и слабой связкой canonical/noindex. Ниже — рабочая схема, как найти источник дублей и убрать их без поломки навигации.
Как понять, что дубли идут именно от фильтров и сортировки
Сначала нужно не править код, а подтвердить источник. Иначе легко закрыть от индексации нужные страницы или сломать внутренние ссылки.
Что проверить в первую очередь
- отчёт Страницы в Google Search Console: есть ли URL с параметрами;
- серверные логи или аналитика: какие параметры реально открывают пользователи;
- исходный код проблемных страниц: есть ли
rel="canonical"и куда он указывает; - robots.txt и мета-теги: не конфликтуют ли они между собой;
- создаёт ли тема или плагин отдельные архивы под фильтры, а не только параметры в URL.
Полезный ориентир: если одна и та же страница доступна как /blog/, /blog/?sort=popular и /blog/?orderby=date, поисковик может воспринимать это как три разные страницы. Даже если контент визуально почти одинаковый.
Какие варианты решения есть и чем они отличаются
| Подход | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| Canonical + noindex для параметров | Когда параметры нужны пользователям, но не должны индексироваться | Не ломает фильтры, быстро внедряется | Нужно следить за корректностью canonical |
| Запрет в robots.txt | Когда URL с параметрами не нужны ни пользователям, ни поисковику | Просто закрыть массовые дубли | Не решает проблему уже найденных URL полностью |
| Кодом убрать генерацию лишних параметров | Когда фильтр создаёт мусорные URL без пользы | Чистое решение на уровне логики | Требует тестирования и доступа к теме/плагину |
Пошаговое решение: сначала canonical, потом запрет лишних параметров
Если фильтры полезны для посетителя, но не должны попадать в индекс, безопаснее начать с canonical и noindex для страниц с параметрами. Это не мешает пользователю сортировать контент, но подсказывает поисковику, какая версия основная.
Шаг 1. Проверьте, не делает ли SEO-плагин это уже сам
Многие SEO-плагины умеют ставить canonical автоматически. Проблема в том, что тема или кастомный код могут его переопределять. Сначала посмотрите исходный HTML страницы с параметром и убедитесь, что canonical указывает на чистый URL без параметров.
Шаг 2. Добавьте noindex для страниц с параметрами
Если у вас есть служебные параметры сортировки или фильтрации, можно отправлять такие страницы в noindex,follow. Ниже пример для темы или небольшого mu-plugin.
<?php
add_filter('wp_robots', function ($robots) {
if (!is_admin() && !empty($_GET)) {
$blocked_params = ['orderby', 'sort', 'filter', 'price', 'color'];
foreach ($blocked_params as $param) {
if (isset($_GET[$param])) {
$robots['noindex'] = true;
$robots['follow'] = true;
break;
}
}
}
return $robots;
});Этот вариант не привязан к конкретному SEO-плагину и работает на уровне WordPress. Но использовать его нужно аккуратно: если на сайте есть полезные страницы поиска или фильтра, которые вы хотите индексировать, их придётся исключить из правила.
Шаг 3. Для массово бесполезных параметров закройте индексацию на уровне сервера или robots.txt
Если параметр создаёт только мусорные URL и не нужен для SEO, его можно закрыть в robots.txt. Это не панацея, но для массовых дублей помогает сократить обход бесполезных страниц.
User-agent: *
Disallow: /*?orderby=
Disallow: /*?sort=
Disallow: /*?filter=
Disallow: /*?price=
Disallow: /*?color=Важно: robots.txt не удаляет уже известные URL из индекса мгновенно. Если страница уже проиндексирована, обычно нужен canonical, noindex или редирект, а не только запрет обхода.
Когда лучше не закрывать параметр, а переписать логику URL
Если фильтр создаёт слишком много комбинаций, правильнее не маскировать проблему, а изменить сам способ формирования ссылок. Это актуально для каталогов, архивов и больших списков записей.
Пример: убрать параметр сортировки из публичных ссылок
Допустим, сортировка нужна только на фронтенде через JavaScript, а в URL она не должна попадать. Тогда можно перехватить формирование ссылок и удалить параметр перед выводом.
<?php
add_filter('home_url', function ($url, $path, $orig_scheme, $blog_id) {
if (is_admin()) {
return $url;
}
$parts = wp_parse_url($url);
if (empty($parts['query'])) {
return $url;
}
parse_str($parts['query'], $query);
$remove = ['orderby', 'sort'];
foreach ($remove as $key) {
unset($query[$key]);
}
$new_query = http_build_query($query);
$base = $parts['scheme'] . '://' . $parts['host'] . ($parts['path'] ?? '');
if (!empty($new_query)) {
return $base . '?' . $new_query;
}
return $base;
}, 10, 4);Это не универсальный рецепт для всех сайтов. На практике чаще безопаснее править генерацию ссылок в конкретном шаблоне или плагине фильтра, чем глобально менять home_url(). Пример выше полезен как ориентир, но перед внедрением его нужно адаптировать под вашу структуру URL.
Проверка результата после внедрения
После изменений важно не ограничиться визуальной проверкой. Дубли часто остаются в индексе даже тогда, когда на сайте уже всё выглядит правильно.
- откройте несколько URL с параметрами и проверьте исходный код;
- убедитесь, что canonical указывает на чистую версию страницы;
- проверьте, что для мусорных параметров возвращается
noindex; - посмотрите, не появились ли ошибки в логах после правки шаблона или фильтра;
- в Search Console отправьте на переобход несколько проблемных URL и сравните статус через несколько дней.
Если у вас есть доступ к командной строке, можно быстро проверить заголовки и robots-метки через curl:
curl -I https://example.com/blog/?orderby=dateДля HTML-проверки удобнее открыть страницу в браузере и посмотреть исходный код на наличие canonical и meta name="robots". Если используется кэш, не забудьте очистить его до теста.
Частые ошибки и как их исправить
Canonical указывает на несуществующую или редиректящую страницу
Такое бывает после смены структуры ссылок. Поисковик получает противоречивый сигнал: одна версия страницы объявлена основной, но она ведёт на 301 или 404. Исправление простое — canonical должен вести на конечный, открывающийся без редиректа URL.
robots.txt закрывает всё подряд
Частая ошибка — запретить слишком широкий шаблон, например весь путь с вопросительным знаком. В итоге под блокировку попадают полезные страницы поиска, пагинация или служебные ссылки. Сначала ограничьте только конкретные параметры, потом проверьте выборку в Search Console.
noindex ставится на все страницы архива
Если правило написано слишком грубо, можно случайно закрыть нормальные категории, теги или страницы пагинации. Это уже не борьба с дублями, а потеря индексации. Проверяйте условия через is_page(), is_archive(), is_search() и наличие конкретных параметров в $_GET.
Кэш отдаёт старую версию метатегов
После правок canonical и robots-метки могут не обновиться из-за серверного или плагинного кэша. Очистите кэш страницы, объектный кэш и, если есть, CDN. Иначе вы будете тестировать уже не текущий код, а старый HTML.
Практические советы по безопасности и производительности
Если фильтры генерируют много URL, это бьёт не только по SEO, но и по обходу сайта. Поисковый робот тратит бюджет на бесполезные комбинации, а сервер — ресурсы на их рендеринг.
- не создавайте отдельные страницы под каждый параметр, если они не дают уникальной ценности;
- не дублируйте фильтрацию одновременно в URL и в AJAX без необходимости;
- проверяйте, не индексируются ли внутренние результаты поиска;
- для больших сайтов следите за количеством URL в sitemap и не добавляйте туда служебные параметры;
- если нужен быстрый способ убрать типовые дубли и мусорные метаданные, посмотрите Clearfy Pro: https://wpshop.ru/plugins/clearfy?utm_source=wp0.ru&utm_medium=article&utm_campaign=kak-ubrat-dubli-stranic-ot-filtrov-i-sortirovki-v-wordpress
Важный момент: не пытайтесь решить проблему только закрытием в robots.txt. Для уже проиндексированных дублей обычно нужен набор мер: canonical, noindex, корректные ссылки и, при необходимости, редиректы.
Короткий чек-лист перед публикацией правок
- проверен источник дублей: фильтр, сортировка или поиск;
- canonical ведёт на чистый URL без параметров;
- служебные параметры получают
noindex,followили закрыты точечно; - robots.txt не блокирует полезные страницы;
- кэш очищен и метатеги обновились;
- в Search Console отправлены на проверку несколько URL с параметрами.
Если после правок дубли продолжают появляться, обычно проблема не в индексации, а в том, что тема или плагин снова генерируют новые комбинации URL. Тогда нужно искать источник в шаблоне архива, виджете фильтра или JS-логике сортировки, а не только в SEO-настройках.