Страницы внутреннего поиска и фильтров часто появляются в индексе не потому, что сайт «плохо настроен», а потому что WordPress и плагины фильтрации честно отдают доступные URL с параметрами. Для поисковика это отдельные страницы, даже если для пользователя они почти дублируют друг друга. В итоге в индексе копятся мусорные URL, расходуется crawl budget, а в отчётах Search Console появляются странные адреса вида ?s=, ?filter_, ?orderby= и похожие комбинации.
Ниже — рабочая схема: как диагностировать источник, что закрывать через robots.txt, что лучше отдавать с noindex, и где не стоит полагаться только на один способ.
Когда проблема действительно есть
Сначала стоит убедиться, что речь именно о техническом мусоре, а не о полезных посадочных страницах. Если в индекс попали страницы поиска по сайту, сортировки, фильтры по атрибутам, пагинация с параметрами или внутренние результаты поиска, это обычно видно по шаблону URL. Типичные признаки:
- в Search Console растёт число страниц с параметрами;
- в выдаче находятся URL с
?s=,?filter,?orderby,?min_priceи похожими параметрами; - одна и та же страница доступна по нескольким адресам;
- в логах видно много обходов URL, которые не несут самостоятельной ценности.
Что именно искать в отчётах
Откройте в Search Console отчёт по индексированию страниц и посмотрите, какие шаблоны URL повторяются. Если у вас подключена аналитика серверных логов, полезно сравнить частоту обхода параметрических URL с обычными страницами. Это помогает понять, что поисковик тратит ресурсы не туда, куда нужно.
Если проблема связана с поиском по сайту, проверьте, не открывается ли страница вида / ?s=запрос с индексируемым заголовком, мета-тегами и каноническим URL на саму себя. Для фильтров и сортировок ситуация похожая: страница может выглядеть как обычный архив, но по сути быть комбинацией параметров.
Что закрывать: robots.txt, noindex или canonical
У этих методов разная задача, и подменять один другим не стоит. robots.txt запрещает обход, noindex просит не включать страницу в индекс, а canonical подсказывает предпочтительный URL. Для параметрических страниц чаще нужен не один инструмент, а комбинация.
| Подход | Когда применять | Ограничение |
|---|---|---|
robots.txt |
Для массового запрета обхода очевидно мусорных параметров | Не гарантирует удаление уже проиндексированных URL |
noindex |
Если страница должна быть доступна пользователю, но не нужна в поиске | Поисковик должен иметь возможность страницу обойти |
canonical |
Для дублей и близких вариантов одной и той же страницы | Не подходит для страниц с нулевой ценностью, если они всё равно генерируются пачками |
Пошаговое решение
Если задача — убрать из индекса страницы внутреннего поиска и фильтров, двигайтесь по порядку: сначала определите источник URL, затем выберите способ закрытия, потом проверьте, не сломали ли вы полезные страницы.
1. Ограничьте обход мусорных параметров
Если у вас много URL с параметрами, которые не должны индексироваться вообще, добавьте точечные правила в robots.txt. Это не панацея, но хороший первый слой защиты от лишнего обхода.
User-agent: *
Disallow: /*?s=
Disallow: /*?orderby=
Disallow: /*?filter_
Disallow: /*?min_price=
Disallow: /*?max_price=
Важно: не закрывайте слишком широко всё подряд через Disallow: /*?, если на сайте есть полезные страницы с параметрами, например, служебные URL или корректные фильтры, которые должны оставаться доступны. Слишком грубое правило легко ломает диагностику и мешает поисковику увидеть noindex.
2. Для страниц, которые должны открываться, но не индексироваться, ставьте noindex
Если страница поиска нужна пользователю, но не должна попадать в выдачу, лучше отдавать noindex, follow в мета-теге robots или через HTTP-заголовок. Для WordPress это обычно делается на уровне темы, плагина SEO или небольшого кода в functions.php.
add_action('wp_head', function () {
if (is_search() || is_404()) {
echo '<meta name="robots" content="noindex,follow">' . "\n";
}
});
Этот пример подходит только как базовый ориентир. В реальном проекте лучше сузить условие, чтобы не пометить noindex лишние страницы. Например, если у вас есть отдельные шаблоны для результатов поиска или архивов с параметрами, проверяйте именно их.
3. Для дублей используйте canonical на чистый URL
Если одна и та же страница доступна с параметрами сортировки или трекинга, canonical помогает указать основную версию. Это особенно полезно, когда фильтр не создаёт новый смысл, а только меняет порядок или добавляет несущественные параметры.
add_filter('get_canonical_url', function ($canonical, $post) {
if (is_singular() && !empty($_GET)) {
return get_permalink($post);
}
return $canonical;
}, 10, 2);
Здесь есть важная оговорка: canonical не должен «маскировать» реально разные страницы. Если фильтр формирует полноценную посадочную страницу с уникальным контентом и спросом, её лучше оставить индексируемой и оптимизировать отдельно.
4. Уберите индексацию из шаблона поиска, если он не нужен в выдаче
Для стандартной страницы поиска WordPress часто достаточно добавить noindex только на шаблон результатов поиска. Это безопаснее, чем пытаться закрыть весь сайт по параметрам.
add_action('wp_head', function () {
if (is_search()) {
echo '<meta name="robots" content="noindex,follow">' . "\n";
}
});
Если у вас уже стоит SEO-плагин, проверьте, не делает ли он это сам. Дублирующая логика в теме и в плагине часто приводит к конфликтам: один код ставит index, другой — noindex, а итоговый HTML зависит от порядка вывода.
Как проверить, что решение сработало
После внедрения не ограничивайтесь визуальной проверкой страницы в браузере. Нужно убедиться, что поисковик видит именно то, что вы задумали.
- Откройте проблемный URL и проверьте исходный код: есть ли
<meta name="robots" content="noindex,follow">. - Проверьте заголовок ответа сервера, если используете
X-Robots-Tag. - Убедитесь, что canonical указывает на чистый URL без параметров.
- В Search Console отправьте страницу на повторную проверку и посмотрите, как меняется статус.
- Через несколько дней проверьте, уменьшилось ли число параметрических URL в отчётах по индексированию.
Если вы закрыли URL в robots.txt, а он уже был в индексе, не ждите мгновенного исчезновения. Поисковику нужно сначала переобойти или хотя бы переоценить страницу. Поэтому для уже проиндексированных адресов лучше сочетать noindex и canonical, а robots.txt использовать как дополнительный фильтр на будущее.
Частые ошибки и как их исправить
Закрыли всё параметрами и сломали полезные страницы
Самая частая ошибка — слишком широкое правило в robots.txt. Например, запрет на все URL с вопросительным знаком может задеть страницы, которые должны индексироваться. Исправление простое: сузьте правило до конкретных параметров и проверьте список исключений.
Поставили noindex на страницу, которую поисковик не может обойти
Если URL закрыт в robots.txt, но вы хотите убрать его из индекса через noindex, поисковик может не увидеть этот тег. В таком случае сначала временно разрешите обход, дождитесь переобхода, а затем уже решайте, нужен ли запрет в robots.txt.
Использовали canonical вместо реального закрытия мусора
Canonical не удаляет проблему, если сайт генерирует сотни бесполезных URL. Поисковик может учитывать подсказку, но всё равно тратить ресурсы на обход. Для мусорных фильтров canonical — это дополнение, а не замена noindex или запрета обхода.
Дублирующий код в теме и плагине
Если SEO-плагин уже управляет мета-тегами, не дублируйте его логику в functions.php. Иначе можно получить конфликт тегов, особенно если один код выводится в wp_head, а другой — через фильтр плагина. Перед правкой проверьте исходный HTML страницы.
Практические советы по безопасности и производительности
Чем больше параметрических URL генерирует сайт, тем выше нагрузка на сервер и тем сложнее поддерживать чистый индекс. Если фильтры построены на тяжёлых запросах к базе, имеет смысл ограничить число комбинаций, которые реально отдаются пользователю. Это уже не только SEO-задача, но и вопрос производительности.
Полезно также:
- не создавать отдельные страницы под каждый случай, если они отличаются только сортировкой;
- проверить, не генерирует ли тема лишние архивы и дубли заголовков;
- убрать из индекса служебные страницы, которые не несут самостоятельной ценности;
- следить, чтобы фильтры не открывали бесконечные комбинации параметров.
Если нужен более системный аудит дублей, каноникализации и служебных страниц, на практике часто помогает связка SEO-настроек и чистки шаблонов. В экосистеме WordPress для этого обычно смотрят в сторону инструментов уровня Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже с плагином важно понимать, какие URL вы закрываете и зачем — иначе можно убрать из индекса не только мусор, но и полезные посадочные страницы.
Мини-чек-лист перед публикацией правок
- Проверены конкретные шаблоны URL, которые попадают в индекс.
- Для мусорных параметров добавлены точечные правила в
robots.txt. - Для страниц, которые должны открываться, но не индексироваться, добавлен
noindex,follow. - Canonical указывает на чистую версию URL без лишних параметров.
- В исходном коде нет конфликтующих мета-тегов от темы и плагина.
- После правок проверен ответ страницы и статус в Search Console.
Если после всех изменений мусорные URL продолжают появляться в индексе, обычно проблема не в одном теге, а в генерации самих страниц. Тогда нужно смотреть шаблон, логику фильтрации и то, какие ссылки сайт вообще раздаёт внутренней перелинковкой.