Внутренний поиск 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 поиска с пустыми результатами.
- Шаблон темы не создаёт дубли через канонические ошибки или лишние параметры.
Если всё сделано аккуратно, поисковик перестанет воспринимать внутренний поиск как отдельный контентный раздел, а вы сохраните нормальную навигацию для пользователей и роботов.