Страницы внутреннего поиска в WordPress часто создают мусорный индекс: одинаковые шаблоны, пустые выдачи, длинные URL с параметрами и десятки почти одинаковых страниц по одному и тому же запросу. При этом сам поиск на сайте может быть полезен для пользователей и редакции. Задача не в том, чтобы убрать поиск целиком, а в том, чтобы не отдавать поисковые страницы в индекс и не плодить дубли.
Ниже разберём рабочую схему: как понять, что проблема именно в поиске, какие варианты закрытия использовать, как не сломать сайт и как проверить результат после внедрения.
Когда проблема действительно в поисковых страницах
Сначала стоит убедиться, что в индекс попали именно URL вида ?s=запрос или их аналоги. На практике это видно по нескольким признакам:
- в поиске Google или Яндекса находятся страницы с параметром
s; - в отчётах по индексированию много URL с одинаковым шаблоном и разными запросами;
- поисковые страницы показывают низкую ценность: пустые выдачи, короткие списки, повторяющиеся сниппеты;
- внутренний поиск используется, но его страницы не должны конкурировать с основными посадочными.
Что проверить до изменений
- Есть ли у сайта SEO-плагин, который уже управляет robots meta и canonical.
- Используются ли кастомные шаблоны поиска, которые могут добавлять свой
noindex. - Есть ли отдельные страницы поиска в sitemap.xml — обычно их там быть не должно.
- Не завязан ли поиск на AJAX-эндпоинты или отдельные публичные URL, которые нужно закрывать отдельно.
Какие есть варианты: robots.txt, meta robots или код
Для поисковых страниц WordPress обычно используют не один, а комбинацию мер. Коротко: robots.txt помогает ограничить обход, но не гарантирует исключение из индекса. Для реального исключения нужен noindex в HTML-ответе или заголовке. Если нужен стабильный контроль, лучше делать это кодом или через SEO-плагин.
| Подход | Что делает | Когда подходит | Ограничение |
|---|---|---|---|
| robots.txt | Снижает обход поисковиками | Как дополнительная мера | Не убирает уже известные URL из индекса |
| meta robots noindex | Просит не индексировать страницу | Для страниц поиска и служебных архивов | Страница должна быть доступна для обхода |
| Код в теме/плагине | Даёт точечный контроль | Когда нужен предсказуемый результат | Нужно аккуратно тестировать шаблоны |
Пошаговое решение через код
Если вы хотите закрыть именно стандартные поисковые страницы WordPress, самый прямой способ — добавить noindex, follow для запросов поиска. Это не мешает пользователю пользоваться поиском, но сигнализирует поисковым системам не включать такие страницы в индекс.
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_search() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );Этот вариант работает на современных версиях WordPress, где формируется robots meta через фильтр wp_robots. Если у вас уже стоит SEO-плагин, проверьте, не переопределяет ли он этот вывод. В таком случае лучше настраивать noindex в самом плагине, чтобы не получить конфликт.
Если нужен ещё и запрет обхода
Для дополнительной страховки можно закрыть обход поисковых URL в robots.txt. Это не замена noindex, а вспомогательная мера. Для стандартного поиска WordPress обычно достаточно строки:
User-agent: *
Disallow: /?s=
Disallow: /search/Но здесь есть нюанс: если у вас есть красивые ЧПУ-пути поиска через плагин или тему, шаблон может отличаться. Поэтому сначала проверьте фактический URL поиска на сайте, а потом уже добавляйте правило.
Если поиск выводится в отдельном шаблоне
Иногда тема или плагин создают собственную страницу результатов поиска, где нужно закрыть не только саму выдачу, но и пустые результаты. Тогда можно добавить условие в шаблон search.php или в подключаемый файл темы:
<?php
if ( is_search() ) {
echo '<meta name="robots" content="noindex,follow">';
}
Этот способ менее универсален, чем фильтр wp_robots, но полезен, если вы работаете со старой темой или нестандартной сборкой, где robots meta не формируется штатно.
Диагностика после внедрения
После правки не ограничивайтесь визуальной проверкой. Нужно убедиться, что сервер реально отдаёт нужные сигналы.
- Откройте страницу поиска с запросом, например
/?s=test. - Посмотрите исходный код страницы и найдите
meta name="robots". - Проверьте, что там есть
noindexиfollow. - Убедитесь, что страница не попадает в XML-карту сайта.
- Проверьте заголовки ответа, если SEO-плагин добавляет
X-Robots-Tag.
Если используете Google Search Console, отправьте URL поисковой страницы на проверку через инспекцию URL. Для уже проиндексированных страниц важно не только добавить noindex, но и дождаться переобхода.
Что считать нормальным результатом
Нормальный результат — поисковые URL остаются доступными для пользователя, но перестают накапливаться как отдельные страницы в индексе. При этом внутренний поиск продолжает работать, а аналитика по запросам не ломается.
Частые ошибки и как их исправить
- Поставили только Disallow в robots.txt. Поисковик может сохранить URL в индексе без контента. Добавьте
noindex. - Закрыли весь поиск через
noindexи забыли про UX. Пользователь всё ещё должен видеть результаты поиска. Не отключайте сам шаблон. - Конфликт с SEO-плагином. Один плагин ставит
index, другой —noindex. Оставьте один источник управления. - Закрыли не тот URL. На сайте может быть не
?s=, а отдельный путь поиска. Сначала проверьте фактический адрес. - Добавили правило в robots.txt, но не проверили sitemap. Если поисковые страницы попали в карту сайта, это лишний сигнал для обхода.
Как не сломать производительность и безопасность
Само закрытие от индексации почти не нагружает сайт, но есть сопутствующие моменты. Если поиском активно пользуются, не стоит делать тяжёлые SQL-запросы на каждый ввод. Лучше проверить, не генерирует ли тема слишком дорогую выдачу, особенно если в результатах участвуют кастомные типы записей и таксономии.
Ещё один практический момент: не открывайте служебные поисковые endpoint'ы без необходимости. Если поиск завязан на AJAX, убедитесь, что публичный обработчик не раскрывает лишние данные и не позволяет бесконечно перебирать запросы без ограничений.
Если нужен более широкий контроль над дублями, служебными архивами и техническими страницами, удобно использовать Clearfy Pro как набор точечных настроек для noindex, robots.txt и чистки лишних SEO-следов: https://wpshop.ru/plugins/clearfy.
Проверочный чек-лист
- Поисковая страница отдаёт
noindex, follow. - В
robots.txtнет случайного запрета на важные разделы сайта. - Поисковые URL не попадают в XML sitemap.
- В SEO-плагине нет второго, конфликтующего правила индексации.
- В Search Console или аналогичном инструменте страница определяется как исключённая из индекса.
- Внутренний поиск продолжает работать для пользователя.
Если после изменений поисковые страницы всё ещё появляются в выдаче, проверьте, не кешируется ли старая версия HTML на уровне плагина, сервера или CDN. В таком случае сначала очистите кеш, а потом повторно проверьте исходный код страницы.