Страницы внутреннего поиска WordPress часто попадают в индекс как технический мусор: у них слабый или дублирующийся контент, много параметров в URL и почти нулевая ценность для поиска. Если на сайте есть активный поиск по записям, товарам или базе знаний, такие страницы лучше закрыть от индексации и при этом не сломать сам поиск для пользователей.
Ниже разберём, как понять, что проблема именно в поисковых URL, какие варианты решения реально работают, и как проверить, что поисковые страницы больше не лезут в индекс.
Когда внутренний поиск становится SEO-проблемой
В WordPress результаты поиска обычно доступны по URL вида /?s=запрос. На небольшом сайте это может быть незаметно, но на ресурсе с большим количеством страниц поисковые выдачи начинают плодить десятки и сотни вариантов URL. Поисковики видят их как отдельные страницы, хотя по сути это техническая выдача, а не самостоятельный контент.
Особенно часто проблема проявляется, если:
- поиск доступен из шапки и активно используется;
- в выдаче есть пагинация;
- запросы содержат служебные символы, пробелы и разные формы одного слова;
- в теме или плагине поиска не настроены мета-теги robots;
- в sitemap случайно попадают технические URL.
Как диагностировать проблему
Сначала проверьте, действительно ли поисковые страницы индексируются. Самый простой способ — поискать в Google по шаблону site:example.com inurl:?s= или site:example.com inurl:/search/, если тема использует человеко-понятные URL поиска. Если в выдаче есть страницы с результатами поиска, значит закрытие от индексации нужно делать на уровне шаблона или SEO-плагина.
Дополнительно посмотрите:
- отчёт «Страницы» в Google Search Console;
- логические дубли в аналитике, если поисковые URL получают трафик из поиска;
- исходный код страницы поиска: есть ли
noindexи корректныйcanonical; - не добавляет ли тема отдельный шаблон поиска с собственными мета-тегами.
Что лучше: плагин, код или настройка темы
Если у вас уже стоит SEO-плагин, проще закрыть поиск через него. Если плагина нет или нужна точечная логика только для WordPress-поиска, надёжнее добавить код в дочернюю тему или мини-плагин. Изменять шаблон напрямую в родительской теме не стоит: после обновления всё слетит.
| Подход | Когда подходит | Плюс | Минус |
|---|---|---|---|
| SEO-плагин | Уже используется Yoast, Rank Math или аналог | Быстро и без кода | Зависит от интерфейса и версии плагина |
| Код в теме/мини-плагине | Нужен контроль и предсказуемое поведение | Работает без лишних зависимостей | Нужно аккуратно тестировать |
| Только robots.txt | Для грубой отсечки | Просто добавить | Не гарантирует удаление из индекса, если URL уже известен поисковику |
Пошаговое решение через код
Самый практичный вариант — добавить noindex, nofollow для страниц поиска и при необходимости отключить их от sitemap. Для WordPress это можно сделать через фильтр wp_robots. Он поддерживается в современных версиях ядра и позволяет менять robots-правила без правки шаблонов.
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_search() ) {
$robots['noindex'] = true;
$robots['nofollow'] = true;
$robots['noarchive'] = true;
}
return $robots;
} );Этот код можно вставить в functions.php дочерней темы или в собственный небольшой плагин. Для production-окружения мини-плагин предпочтительнее: он не зависит от темы и не потеряется при смене дизайна.
Если у вас есть отдельный sitemap-генератор, проверьте, не включаются ли туда поисковые URL. В стандартном WordPress core поисковые страницы в sitemap не попадают, но плагины и кастомные решения иногда добавляют лишнее.
Если нужен HTTP-заголовок X-Robots-Tag
Иногда удобнее отдавать директиву на уровне заголовка, особенно если тема или плагин формируют сложную HTML-разметку. Для поисковых страниц это тоже рабочий вариант:
<?php
add_action( 'template_redirect', function() {
if ( is_search() && ! headers_sent() ) {
header( 'X-Robots-Tag: noindex, nofollow', true );
}
} );Такой способ полезен, когда вы хотите закрыть от индексации именно ответ поиска, а не только HTML-страницу. Но не используйте его вслепую для всех страниц: проверяйте, что заголовок не конфликтует с настройками SEO-плагина.
Как сделать это через SEO-плагин
Если на сайте уже используется SEO-плагин, ищите настройку для архивов поиска или технических страниц. В разных интерфейсах она может называться по-разному: Search pages, Search results, noindex for search. Смысл один — поисковая выдача не должна индексироваться.
Плюс этого пути в том, что плагин обычно сам выставляет и meta robots, и canonical, и иногда исключает такие URL из sitemap. Минус — настройки могут меняться после обновлений, а на кастомных темах иногда приходится дополнительно проверять шаблон поиска.
Если вы используете Clearfy Pro, у него есть инструменты для чистки сайта и управления техническими страницами. Это уместно, когда нужно не только закрыть поиск, но и убрать другие SEO-дубли. Ссылка на продукт: Clearfy Pro.
Проверка результата после внедрения
После изменения не ограничивайтесь просмотром HTML в браузере. Нужно убедиться, что поисковая страница действительно отдаёт нужные сигналы для роботов.
- Откройте страницу поиска с тестовым запросом, например
/?s=test. - Посмотрите исходный код страницы и найдите
noindex. - Проверьте заголовки ответа через DevTools или
curl. - Убедитесь, что страница не попала в sitemap.
- В Google Search Console отправьте URL на повторную проверку, если он уже был в индексе.
Проверить заголовки можно так:
curl -I https://example.com/?s=testВ ответе ищите X-Robots-Tag: noindex, nofollow, если вы использовали вариант с заголовком. Если закрытие сделано через HTML-мета-тег, откройте исходный код страницы и проверьте блок <head>.
Частые ошибки и как их исправить
Закрыли страницу в robots.txt, но она всё ещё в индексе
Это типичная ошибка. Disallow в robots.txt не удаляет уже известные URL из индекса. Если страница уже проиндексирована, нужен именно noindex или заголовок X-Robots-Tag, а затем повторная проверка в Search Console.
Поставили noindex, но canonical ведёт на саму поисковую страницу
Такое бывает в кастомных темах. Для технических страниц canonical должен либо отсутствовать, либо указывать на более полезную страницу, обычно на главную страницу поиска или на соответствующий архив. Самоканоникал для поиска редко помогает и может мешать удалению URL из индекса.
Отключили индексацию, но поиск сломался для пользователей
Это уже не SEO, а ошибка шаблона. noindex не должен влиять на работу формы поиска или выдачи. Если после правок поиск перестал показывать результаты, проверьте, не был ли случайно изменён обработчик формы, action у <form> или rewrite-правила.
Добавили код в родительскую тему
После обновления тема перезапишется, и проблема вернётся. Для таких правок используйте дочернюю тему или мини-плагин. Это особенно важно, если сайт поддерживается несколькими разработчиками и изменения должны быть воспроизводимыми.
Чек-лист перед публикацией правки
- поисковые URL определены точно:
/?s=или кастомный путь; - для них добавлен
noindexилиX-Robots-Tag; - canonical не указывает на технический дубль;
- поисковые страницы не попадают в sitemap;
- проверка через
curl -Iили исходный код подтверждает изменения; - в Search Console отправлен URL на переобход, если он уже индексировался.
Практические замечания по безопасности и производительности
Само закрытие поиска от индексации не ускоряет сайт напрямую, но помогает убрать лишний шум в отчётах и снизить количество бесполезных обходов. Если поисковая форма активно используется, имеет смысл дополнительно ограничить тяжёлые запросы: например, не отдавать слишком длинные строки поиска и не строить сложные SQL-условия без необходимости.
Если у вас есть кастомный поиск по большому каталогу записей, проверьте, не создаёт ли он лишнюю нагрузку на базу. В таких случаях полезно кэшировать результаты поиска на короткое время, но только если это не ломает актуальность выдачи.
Для сайтов, где важна чистота технического SEO, удобно держать такие настройки централизованно: либо в SEO-плагине, либо в отдельном служебном плагине. Тогда закрытие внутренних поисков, архивов и других технических URL не расползается по теме и не зависит от ручных правок в шаблонах.