На живом сайте чаще всего нужно закрыть не весь WordPress, а только отдельные страницы: результаты поиска, архивы с дублями, тестовые разделы, служебные URL, страницы пагинации или внутренние фильтры. Ошибка здесь одна и та же: пытаются решить задачу только через robots.txt, хотя поисковик может всё равно проиндексировать URL по внешним ссылкам. В других случаях, наоборот, ставят noindex там, где страницу ещё нужно обходить роботам для передачи ссылочного веса.
Ниже разберём, когда использовать robots.txt, когда noindex, а когда лучше ограничить доступ на уровне сервера. Примеры рассчитаны на обычный WordPress без выдуманных плагинов и нестандартных API.
Когда проблема действительно в индексации, а не в дублировании
Сначала стоит понять, что именно вы хотите убрать из поиска. Это не всегда одна и та же задача.
Типичные сценарии
- страницы внутреннего поиска вида
?s=; - архивы тегов, авторов или дат, если они не несут ценности;
- технические страницы:
/wp-login.php,/wp-admin/,/cart/и подобные служебные URL; - дубли с параметрами сортировки и фильтрации;
- черновые разделы, которые уже доступны по прямой ссылке, но не должны попадать в поиск.
Если страница уже в индексе, одного запрета в robots.txt обычно недостаточно. Робот может не заходить на страницу, но URL останется в выдаче без сниппета. Для удаления из индекса нужен либо noindex, либо закрытие доступа, либо оба метода вместе — в зависимости от задачи.
Диагностика: что проверить перед правкой
Перед изменениями откройте проблемный URL и посмотрите три вещи: код ответа, наличие meta robots и то, не блокируется ли страница в robots.txt. Это можно сделать вручную в браузере и через инструменты разработчика.
- Если страница отдаёт
200 OKи в ней естьmeta name="robots" content="noindex", поисковик может исключить её из индекса после переобхода. - Если страница закрыта в
robots.txt, но уже известна поисковику, она может остаться в индексе как URL без содержимого. - Если нужен полный запрет доступа, лучше использовать серверное ограничение, а не только директивы для роботов.
Проверить заголовки можно так:
curl -I https://example.com/служебная-страница/А наличие meta robots — через просмотр исходного кода страницы. Если вы используете SEO-плагин, он может уже добавлять свои правила, и тогда ручная правка в теме будет конфликтовать с настройками плагина.
Какой способ выбрать: robots.txt, noindex или .htaccess
| Способ | Что делает | Когда подходит | Ограничение |
|---|---|---|---|
robots.txt | Запрещает обход | Для экономии краулингового бюджета и служебных URL | Не гарантирует удаление из индекса |
noindex | Просит не индексировать страницу | Для страниц, которые должны открываться, но не попадать в поиск | Страница должна быть доступна для обхода |
.htaccess | Ограничивает доступ на уровне сервера | Для закрытых тестовых разделов и админских файлов | Можно случайно сломать доступ к нужным URL |
Пошаговое решение для WordPress
1. Закройте служебные URL через robots.txt
Если задача — не тратить обход на внутренние или технические адреса, добавьте правила в robots.txt. В WordPress файл обычно лежит в корне сайта. Если его нет, можно создать вручную.
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /?s=
Disallow: /search/
Disallow: /tag/
Disallow: /author/
Disallow: /feed/Это базовый пример, но не копируйте его бездумно. Например, закрывать /tag/ имеет смысл только если теги реально не нужны в поиске. Если теги дают трафик и полезны пользователю, лучше оставить их открытыми и доработать контент.
2. Добавьте noindex для конкретных шаблонов и архивов
Для страниц, которые должны открываться, но не индексироваться, удобнее добавить noindex программно. Это надёжнее, чем вручную править шаблоны в каждой теме.
<?php
add_filter('wp_robots', function ($robots) {
if (is_search() || is_author() || is_date()) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});Этот код можно добавить в дочернюю тему или в собственный мини-плагин. Он работает через стандартный фильтр wp_robots, который есть в современных версиях WordPress. Для старых проектов с устаревшими SEO-решениями лучше сначала проверить, не дублирует ли это настройку плагина.
3. Для закрытых разделов используйте ограничение доступа
Если страница не должна быть доступна вообще, не ограничивайтесь noindex. Например, тестовый подкаталог или временный раздел лучше закрыть на уровне сервера.
<FilesMatch "^(test|staging)">
Require all denied
</FilesMatch>Для Apache это рабочий вариант, но применять его нужно аккуратно. Если вы не уверены в структуре сайта, сначала проверьте, какие URL реально попадают под правило. Для Nginx логика будет другой, и этот фрагмент туда не переносится.
Как проверить, что запрет индексации сработал
После внедрения не ограничивайтесь визуальной проверкой. Нужно убедиться, что страница отдает нужные сигналы поисковику.
- Откройте страницу и проверьте исходный код: есть ли
noindexв meta robots или в HTTP-заголовках. - Проверьте
robots.txtпо адресу/robots.txtи убедитесь, что правило не блокирует лишнее. - Посмотрите код ответа сервера: для закрытых страниц это должен быть ожидаемый статус, а не случайный редирект.
- Если используете Google Search Console, отправьте URL на повторную проверку после изменений.
Для быстрой диагностики удобно смотреть заголовки:
curl -I https://example.com/search/?s=testЕсли страница должна быть закрыта от индексации, но при этом открывается в браузере, ищите в ответе X-Robots-Tag или meta robots. Если страница должна быть полностью недоступна, проверьте, не отдаёт ли сервер 200 OK вместо запрета.
Частые ошибки и как их исправить
Закрыли страницу в robots.txt и ждёте удаления из индекса
Это самая частая ошибка. robots.txt запрещает обход, но не всегда удаляет URL из выдачи. Если страница уже известна поисковику, добавьте noindex или закройте доступ.
Ставят noindex на страницу, которая должна передавать сигналы
Если закрыть от индексации важный архив или категорию, поисковик перестанет учитывать её как посадочную страницу. В результате можно потерять трафик на полезных разделах. Сначала проверьте, есть ли у страницы поисковый спрос и внутренние ссылки.
Редактируют шаблон темы, а потом обновление всё затирает
Любые правки в header.php или других файлах темы без дочерней темы — временное решение. Для постоянной настройки используйте фильтр wp_robots или SEO-плагин с понятными правилами.
Блокируют слишком широкий путь
Если в robots.txt закрыть целый каталог, можно случайно скрыть важные страницы, медиафайлы или AJAX-эндпоинты. Перед публикацией проверьте, не совпадает ли правило с рабочими URL.
Практические советы по безопасности и производительности
Если вы закрываете служебные страницы, не путайте индексацию и безопасность. noindex не защищает от доступа. Для админки, тестовых копий и приватных разделов нужен отдельный контроль доступа.
С точки зрения производительности не стоит закрывать всё подряд. Поисковым роботам иногда полезно обходить страницы, даже если они не индексируются: это помогает быстрее находить обновления и не ломать внутренние связи. Поэтому для дублей и фильтров часто лучше noindex, follow, чем полный запрет обхода.
Если у вас много технических дублей, имеет смысл централизовать правила. В проектах, где нужен более широкий набор SEO-настроек и чистка дублей, часто используют Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже с плагином полезно понимать, какие именно правила он добавляет, чтобы не закрыть лишнее.
Мини-чек-лист перед публикацией
- Понял, что нужно: запрет обхода, запрет индексации или полное ограничение доступа.
- Проверил, не конфликтует ли правило с SEO-плагином.
- Добавил
noindexтолько на нужные шаблоны. - Не закрыл важные страницы случайным правилом в
robots.txt. - Проверил код ответа и исходный HTML после изменений.
- Отправил URL на переобход в поисковой панели, если страница уже была в индексе.
Если задача сформулирована точно, решение обычно получается простым: robots.txt — для обхода, noindex — для индексации, .htaccess — для доступа. В WordPress важно не смешивать эти уровни и не пытаться одним правилом закрыть всё сразу.