Если на сайте появились десятки URL вида ?sort=, ?filter=, ?page= или архивы с одинаковым контентом, поисковик начинает тратить обход на мусорные страницы. Обычно это видно по росту дублей в индексе, странным URL в отчётах Search Console и падению качества внутренней перелинковки. Проблема не в самих параметрах, а в том, что WordPress и тема часто отдают по ним полноценные страницы, хотя для пользователя это всего лишь состояние фильтра.
Ниже — рабочая схема: что именно закрывать, что не трогать, и как проверить, что после правок сайт не потерял полезные страницы из индекса.
Когда параметры и фильтры становятся проблемой
Не каждый URL с параметром нужно запрещать. Если параметр меняет только сортировку, пагинацию или локальный фильтр, а основной контент остаётся тем же, это кандидат на noindex или каноникал. Если же параметр формирует отдельную полезную посадочную страницу с уникальным спросом, закрывать её нельзя.
Типичные признаки дублей
- в индексе есть несколько URL с одинаковым заголовком и описанием;
- в отчётах Search Console растёт число страниц с параметрами;
- в выдаче появляются URL с
?replytocom=,?sort=,?filter_и похожими хвостами; - одна и та же статья доступна через архив, теги, поиск и параметры сортировки.
Что обычно не стоит закрывать
Не закрывайте всё подряд через robots.txt. Если поисковик не сможет зайти на страницу, он не увидит мета-теги noindex и канонический URL. Для параметров, которые уже попали в индекс, это часто хуже, чем кажется.
| Подход | Когда подходит | Минус |
|---|---|---|
| Плагин SEO | Нужно быстро настроить noindex и canonical без кода | Меньше контроля над логикой |
| Код в теме/плагине | Есть чёткие правила для конкретных параметров | Нужна аккуратная поддержка |
robots.txt | Нужно снизить обход второстепенных URL | Не решает проблему индексации уже известных страниц |
Диагностика: какие URL реально нужно закрыть
Сначала соберите список параметров, которые генерирует сайт. Это можно сделать в Search Console, в логах сервера или просто по внутреннему поиску по шаблону URL. На практике чаще всего мешают:
replytocom— ссылки на комментарии;sort,orderby— сортировка;filter,color,size— фильтры каталога или архива;paged,page— пагинация, если она дублирует основной контент;- служебные параметры, которые тема или плагин добавляет в URL без необходимости.
Проверьте, отдают ли такие страницы индексируемый HTML. Откройте URL с параметром и посмотрите исходный код: есть ли <meta name="robots", совпадает ли canonical с основной страницей, не меняется ли title на бессмысленный набор фильтров.
Пошаговое решение без поломки SEO
Шаг 1. Закройте лишние параметры на уровне мета-тегов
Если у вас есть доступ к теме или небольшому плагину, можно добавить noindex,follow для конкретных параметров. Это не универсальная кнопка, а точечное правило для страниц, которые не должны попадать в индекс.
<?php
add_action('wp_head', function () {
if (is_admin()) {
return;
}
$blocked_params = array('replytocom', 'sort', 'orderby', 'filter', 'color', 'size');
foreach ($blocked_params as $param) {
if (isset($_GET[$param]) && $_GET[$param] !== '') {
echo '<meta name="robots" content="noindex,follow">' . "\n";
break;
}
}
}, 1);Этот вариант подходит, если параметр действительно делает страницу дублем. Для пагинации и архивов лучше не ставить noindex автоматически, пока не проверите, не теряете ли вы полезные страницы.
Шаг 2. Укажите canonical на основную страницу
Если параметр меняет только состояние просмотра, canonical должен вести на чистый URL без параметров. Это снижает риск того, что поисковик выберет в индекс не ту версию страницы.
<?php
add_filter('get_canonical_url', function ($canonical, $post) {
if (is_admin() || ! is_singular()) {
return $canonical;
}
$blocked_params = array('replytocom', 'sort', 'orderby', 'filter', 'color', 'size');
foreach ($blocked_params as $param) {
if (isset($_GET[$param]) && $_GET[$param] !== '') {
return get_permalink($post);
}
}
return $canonical;
}, 10, 2);Если у вас уже стоит SEO-плагин, проверьте, не задаёт ли он canonical сам. Дублировать логику в двух местах не нужно: выберите один источник правды.
Шаг 3. Ограничьте обход второстепенных URL в robots.txt
robots.txt полезен как дополнительный сигнал для обхода, но не как основное средство удаления из индекса. Его стоит использовать для явных технических URL, которые не должны массово сканироваться.
User-agent: *
Disallow: /*?replytocom=
Disallow: /*?sort=
Disallow: /*?orderby=
Disallow: /*?filter=
Не добавляйте туда всё подряд, особенно если параметр нужен для работы интерфейса и иногда должен открываться поисковику для переобхода. Сначала проверьте, что страница уже получает noindex или canonical.
Шаг 4. Уберите генерацию мусорных ссылок в теме и шаблонах
Иногда проблема не в индексации, а в том, что тема сама раздаёт ссылки с параметрами в меню, хлебных крошках, блоках сортировки или виджетах. Тогда поисковик получает слишком много внутренних URL, а пользователь — лишние переходы.
Проверьте шаблоны, где формируются ссылки на архивы и списки. Если параметр не нужен для базового сценария, не добавляйте его в ссылку по умолчанию. Для фильтров лучше строить URL только после действия пользователя.
Как проверить, что решение сработало
После внедрения не ориентируйтесь только на визуальный вид страницы. Нужно проверить именно технические сигналы.
- Откройте URL с параметром и убедитесь, что в исходном коде есть
noindex,followили canonical на чистую страницу. - Проверьте, что основной URL без параметров остался индексируемым.
- В Search Console отправьте проверку URL и посмотрите, как робот видит страницу.
- Через несколько обходов проверьте, уменьшается ли число дублей в отчёте по индексированию.
Полезно сравнить исходный код двух страниц: чистой и с параметром. Если canonical указывает на одну и ту же основную страницу, а параметрическая версия не претендует на индекс, вы на правильном пути.
Частые ошибки и как их исправить
Закрывают URL в robots.txt и ждут удаления из индекса
Это самая частая ошибка. Если страница уже известна поисковику, запрет на обход не всегда убирает её из индекса. Сначала нужен noindex или корректный canonical, потом уже можно ограничивать обход.
Ставят noindex на все страницы с параметрами без разбора
Так легко потерять полезные посадочные страницы, которые реально дают трафик. Например, фильтр по бренду или категории может быть отдельной точкой входа. Перед массовым закрытием проверьте спрос и текущие позиции.
Дублируют canonical в плагине и в теме
Если один слой пишет canonical на чистый URL, а другой — на параметрический, поисковик может игнорировать оба сигнала. Оставьте только один механизм.
Закрывают пагинацию вместе с дублями
Пагинация сама по себе не всегда мусор. Если у вас длинные архивы или списки записей, страницы /page/2/ и дальше могут быть полезны для обхода и внутренней навигации. Решение зависит от структуры сайта, а не от самого факта наличия page.
Что делать, если нужен быстрый вариант без кода
Если править шаблон сейчас нельзя, используйте SEO-плагин с настройкой canonical и meta robots для архивов, таксономий и служебных страниц. Это не заменяет нормальную архитектуру URL, но помогает быстро убрать явные дубли. На проектах с большим количеством технических дублей часто удобнее сначала навести порядок в настройках, а потом уже переносить логику в код темы или мини-плагин.
Если на сайте уже есть хаос из дублей, полезно сначала убрать лишние архивы, теги и служебные страницы, а затем отдельно заняться параметрами. В WordPress это обычно даёт более предсказуемый результат, чем попытка закрыть всё одним правилом.
Практика безопасности и производительности
Любая логика, которая анализирует $_GET, должна быть максимально простой. Не тяните в неё тяжёлые запросы к базе и не делайте сложные проверки на каждом хите. Для параметров достаточно короткого списка и раннего выхода.
Если у вас большой сайт, не генерируйте отдельные правила для десятков параметров без необходимости. Чем меньше условий в шаблоне, тем проще поддержка и ниже риск случайно закрыть важную страницу.
- держите список параметров в одном месте;
- проверяйте изменения на staging-копии;
- после правок смотрите исходный код и отчёты индексации;
- не используйте
robots.txtкак единственный способ удаления дублей; - не закрывайте полезные фильтры, если они уже дают трафик.
Если нужен более системный подход к чистке дублей и технической оптимизации WordPress, часть задач можно закрыть настройками SEO- и cleanup-инструментов, но логику параметров всё равно лучше проверять вручную на конкретном сайте, а не по шаблону.