Как запретить индексацию страниц поиска в WordPress и убрать SEO-дубли

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

Задача здесь не в том, чтобы сломать поиск. Нужно оставить его рабочим для пользователей, но убрать из индекса всё, что не даёт самостоятельной ценности: страницы вида ?s=, пустые выдачи, а иногда и отдельные шаблоны поиска в теме.

Когда проблема уже есть: как понять, что поиск индексируется

Первый признак — в отчётах поисковых систем появляются URL с параметром s или с путями, похожими на страницу поиска. Второй признак — в выдаче находятся страницы с заголовками вроде «Результаты поиска для…», хотя вы их не продвигали. Третий — в логах или аналитике видно, что боты регулярно заходят на поиск по случайным запросам.

Проверка руками занимает пару минут:

  • Откройте сайт и выполните поиск по любому слову.
  • Посмотрите адрес в браузере: обычно это /?s=запрос или похожий URL.
  • Проверьте исходный код страницы поиска: есть ли meta name="robots" и какой у него контент.
  • Сделайте запрос в поиске по сайту: site:example.com inurl:?s= или site:example.com "Результаты поиска".

Если страницы поиска уже в индексе, одного noindex недостаточно. Обычно нужно ещё убрать их из sitemap, чтобы не подталкивать поисковик к повторной индексации.

Что лучше: плагин, код или настройка темы

Если сайт уже использует SEO-плагин, сначала проверьте его настройки. Во многих случаях это самый безопасный путь: меньше кода, меньше риска сломать шаблон. Если SEO-плагина нет или он не управляет поисковыми страницами, проще закрыть их через код в дочерней теме или мини-плагине.

ПодходПлюсыМинусы
SEO-плагинБыстро, без правки темы, обычно есть управление robots и sitemapЗависит от конкретного плагина и его настроек
Код в теме/мини-плагинеТочный контроль, не нужен лишний плагинНужно аккуратно поддерживать при обновлениях
Правка шаблона поискаМожно изменить поведение и заголовки страницыЛегко сломать совместимость с темой

Пошаговое решение через код

Ниже рабочий вариант, который закрывает страницы поиска от индексации и убирает их из sitemap, если тема или SEO-плагин не делают это сами. Код лучше добавить в мини-плагин или в functions.php дочерней темы.

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

add_action( 'wp_head', function () {
	if ( is_search() ) {
		echo '<meta name="robots" content="noindex,follow">' . "\n";
	}
}, 1 );

Этот фрагмент не мешает пользователю пользоваться поиском, но даёт поисковикам сигнал не индексировать страницу результатов. Для большинства сайтов этого уже достаточно, если поисковые URL не попадают в sitemap и не размножаются через параметры.

2. Убрать поиск из XML sitemap

Если вы используете собственный sitemap или плагин, который позволяет фильтровать типы URL, исключите поисковые страницы на уровне генерации. В стандартном WordPress поисковые результаты обычно не попадают в sitemap сами по себе, но в проектах с кастомной логикой это бывает иначе.

Если у вас есть кастомный список URL для sitemap, фильтруйте его до вывода:

function wpcode_filter_sitemap_urls( array $urls ): array {
	return array_values( array_filter( $urls, function ( $url ) {
		return strpos( $url, '?s=' ) === false;
	} ) );
}

Сам по себе этот пример не подключён к конкретному фильтру, потому что у разных реализаций sitemap свои хуки. Смысл здесь в логике: не отдавайте в карту сайта URL поиска, если они туда попали из кастомного генератора.

3. Ограничить пустые и мусорные запросы

Если у вас есть проблема с ботами, которые дергают ?s= без запроса, можно перенаправлять пустой поиск на главную или на страницу поиска с понятным сообщением. Это не про SEO, а про чистку мусорных страниц и логов.

add_action( 'template_redirect', function () {
	if ( is_search() ) {
		$query = get_search_query( false );

		if ( trim( $query ) === '' ) {
			wp_safe_redirect( home_url( '/' ), 302 );
			exit;
		}
	}
} );

Такой редирект стоит использовать осторожно. Если у вас в теме есть отдельная страница с сообщением «Введите запрос», редирект может ухудшить UX. В этом случае лучше оставить noindex и просто показывать нормальную пустую выдачу.

Если используется SEO-плагин

Во многих проектах проще не писать код, а проверить настройки SEO-плагина. Ищите опции вроде noindex для страниц поиска, исключить из sitemap, robots meta. Важно не путать закрытие от индексации и блокировку в robots.txt: если запретить обход, поисковик может не увидеть noindex.

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

Проверка результата после внедрения

После изменений не ограничивайтесь визуальной проверкой. Нужны три шага:

  1. Откройте страницу поиска и убедитесь, что в <head> появился noindex,follow.
  2. Проверьте, что поиск по сайту всё ещё работает для пользователя.
  3. Посмотрите, не остались ли URL поиска в sitemap и внутренних ссылках.

Для быстрой проверки можно использовать исходный код страницы или команду в терминале:

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

Здесь вы не увидите meta-тег, потому что он в HTML, а не в заголовках ответа. Поэтому полезнее смотреть полный документ:

curl -s "https://example.com/?s=test" | grep -i "robots\|search"

Если у вас есть доступ к Search Console или аналогичному инструменту, проверьте, уменьшилось ли количество страниц поиска в отчётах по индексированию. Полное исчезновение не всегда происходит быстро: поисковик может переобходить старые URL ещё какое-то время.

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

Ставят Disallow в robots.txt вместо noindex

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

Закрывают не только поиск, но и полезные страницы

Иногда в шаблоне темы поиск и архивы выводятся через один и тот же код. После правки под is_search() случайно задевают категории, теги или кастомные архивы. Перед публикацией проверьте, что noindex не появился на обычных страницах и записях.

Оставляют поисковые URL в sitemap

Если карта сайта генерируется кастомно, она может продолжать отдавать URL с ?s=. Тогда поисковик получает противоречивые сигналы: страница закрыта от индексации, но одновременно предлагается в sitemap. Это не критическая ошибка, но лишний шум лучше убрать.

Редиректят любой поиск на главную

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

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

Страницы поиска — удобная точка для мусорной нагрузки. Боты могут генерировать тысячи запросов с разными параметрами, и это бьёт по базе данных и логам. Если сайт часто получает такой трафик, имеет смысл:

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

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

Короткий чек-лист перед публикацией

  • На странице поиска есть meta robots noindex,follow.
  • Поиск не попал в XML sitemap.
  • Пустые запросы обработаны отдельно.
  • Обычные записи, категории и страницы не получили лишний noindex.
  • В поиске по сайту больше не растёт число служебных URL.

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

}
Автоматическое создание и удаление логов в WordPress
12.09.2026
Как запретить индексацию XML sitemap для отдельных типов страниц в WordPress
30.08.2026
Как отключить Emoji в WordPress для ускорения сайта
20.09.2026
Программное отключение неиспользуемых методов оплаты в WooCommerce
12.09.2026
Как создать динамический вывод данных в WordPress с использованием AJAX
12.09.2026

Разработка под WordPress: подробные руководства, список встроенных функций, готовые решения.