Как закрыть от индексации страницы поиска WordPress и убрать мусорные URL из выдачи

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

Типичный сценарий такой: в поиске по сайту появляются адреса вида / ?s=..., а в отчётах поисковой системы — десятки или сотни страниц с одинаковым шаблоном, но разным запросом. Если ничего не делать, поисковик сам решит, что из этого стоит держать в индексе, а что нет. Лучше задать правила явно.

Когда проблема действительно есть

Не каждый URL поиска нужно срочно закрывать. Сначала проверьте, что именно индексируется и как это выглядит в выдаче. Если в поиске по сайту используются GET-параметры, обычно это адреса вида ?s=запрос. Такие страницы почти всегда бесполезны для внешнего поиска: контент на них меняется от запроса к запросу, а ценность для пользователя и поисковика минимальна.

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

  • Есть ли в индексе страницы вида ?s= или /search/.
  • Появляются ли в выдаче пустые результаты поиска.
  • Есть ли дубли из-за параметров сортировки, фильтров или пагинации.
  • Не закрыт ли случайно сам поиск от пользователей через редиректы или ошибки шаблона.

Если сайт небольшой, а страниц поиска в индексе немного, иногда достаточно только noindex. Если мусора много, лучше сочетать несколько мер: запрет индексации, корректный robots.txt и нормальный шаблон страницы поиска.

Пошаговое решение без лишних рисков

1. Добавьте noindex, follow для страниц поиска

Самый безопасный вариант — оставить переходы по ссылкам доступными для обхода, но запретить индексацию самой страницы. Для этого можно использовать фильтр wp_robots, который есть в современных версиях WordPress.

<?php
add_filter( 'wp_robots', function( array $robots ) {
    if ( is_search() ) {
        $robots['noindex'] = true;
        $robots['follow']  = true;
    }

    return $robots;
} );

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

2. Закройте сам шаблон поиска от лишнего шума

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

<?php
if ( is_search() ) :
    $query = get_search_query( false );
    if ( '' === trim( $query ) ) :
        echo '<p>Введите поисковый запрос.</p>';
    endif;
endif;

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

3. Добавьте правило в robots.txt только если это оправдано

Для некоторых сайтов полезно дополнительно закрыть обход URL поиска в robots.txt. Но это не замена noindex: если страница уже известна поисковику, запрет в robots может помешать ему увидеть мета-тег и удалить URL из индекса быстрее.

Если всё же нужен такой шаг, используйте аккуратное правило для стандартного параметра поиска:

User-agent: *
Disallow: /*?s=
Disallow: /search/

Это не универсальная магия. Если у вас поиск работает через другие параметры или AJAX, сначала проверьте реальные URL в браузере и в логах сервера.

Сравнение подходов: плагин, код или только robots

ПодходКогда подходитПлюсыМинусы
Только robots.txtКогда нужно быстро сократить обход URLПросто внедритьНе гарантирует удаление уже известных страниц из индекса
noindex, follow через кодКогда важна управляемая индексацияТочнее и безопаснееНужно править тему или мини-плагин
SEO-плагинКогда на сайте уже есть централизованная SEO-настройкаУдобно для редакторовНе всегда даёт тонкий контроль именно над поиском

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

Диагностика: как понять, что решение работает

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

  • Откройте страницу поиска с любым запросом и посмотрите исходный код.
  • Проверьте наличие <meta name="robots" content="noindex,follow"> или эквивалентного заголовка.
  • Убедитесь, что страница не закрыта ошибкой 404 или редиректом на главную.
  • Проверьте несколько вариантов запросов: короткий, пустой, с кириллицей, с латиницей.
  • Если используете Search Console или аналогичный инструмент, посмотрите, уменьшается ли число URL поиска в отчётах по индексированию.

Для быстрой проверки на сервере можно временно вывести robots-данные через wp_robots в тестовой среде или посмотреть HTML ответа через curl:

curl -I https://example.com/?s=test

Если у вас настроен noindex через HTML, смотрите не только заголовки ответа, но и сам разметочный код страницы.

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

Закрыли поиск в robots.txt, но URL остались в индексе

Это нормальная ситуация. Disallow не равен удалению из индекса. Поисковик может ещё долго помнить старые адреса, если не видит явного noindex или не получает сигналов о том, что страница стала неканонической.

Поставили noindex на все страницы сайта

Такое бывает, если условие написано слишком широко. Проверяйте, что фильтр срабатывает только на is_search(), а не на архивы, категории или произвольные шаблоны.

Сломали поиск редиректом

Иногда разработчики пытаются отправлять все запросы поиска на главную. Это плохая идея: пользователь теряет ожидаемое поведение, а поисковик получает странные сигналы. Лучше оставить поиск рабочим, но закрыть его от индексации.

Не учли AJAX-поиск

Если тема использует AJAX-подсказки, они могут создавать отдельные endpoint'ы или запросы к REST API. В таком случае нужно смотреть не только страницу результатов, но и то, какие URL реально генерируются на фронтенде.

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

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

Если хотите сделать настройку управляемой без правки темы, вынесите код в небольшой mu-plugin. Так он не потеряется при обновлении шаблона:

<?php
/**
 * Plugin Name: Search Noindex
 */
add_filter( 'wp_robots', function( array $robots ) {
    if ( is_search() ) {
        $robots['noindex'] = true;
        $robots['follow']  = true;
    }
    return $robots;
} );

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

Что проверить после публикации изменений

  • Страница поиска отдаёт noindex, follow.
  • В robots.txt нет случайного запрета на важные разделы сайта.
  • Поиск по сайту продолжает работать для пользователей.
  • В выдаче не появляются новые URL поиска с пустыми результатами.
  • Шаблон темы не создаёт дубли через канонические ошибки или лишние параметры.

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

Наш каталог плагинов WordPress