Служебные страницы, фильтры, тестовые публикации, результаты поиска по сайту и дубли архивов часто попадают в индекс не потому, что WordPress «плохой», а потому что им никто явно не сказал, что их индексировать не нужно. На практике это решается не одним способом: где-то нужен noindex, где-то — запрет обхода в robots.txt, а где-то лучше вообще убрать страницу из публичного доступа.
Ниже — рабочий сценарий для типовых задач: закрыть конкретную страницу, не сломать внутреннюю навигацию и проверить, что поисковик действительно видит нужные директивы.
Когда проблема уже видна в индексе
Обычно сигнал один из трех: в поиске всплывают страницы, которых не должно быть; в Search Console растет число «Просканировано, но не проиндексировано»; в выдаче появляются дубли с параметрами, пагинацией или техническими URL. Если сайт небольшой, это может выглядеть как мелочь. На сайтах с большим количеством архивов и фильтров такие страницы быстро размывают качество индекса.
Что именно стоит закрывать
- страницы поиска по сайту вида
?s=; - служебные страницы: благодарности, черновые лендинги, внутренние инструкции;
- архивы авторов на сайтах с одним автором;
- дубли таксономий и архивов, если они не несут ценности;
- страницы с UTM и другими параметрами, если они создают мусорные URL;
- тестовые записи и временные страницы, которые по ошибке стали публичными.
Сначала диагностика: что уже индексируется
Перед правками проверьте, как страница сейчас отдается поисковику. Не ориентируйтесь только на визуальный вид в браузере. Нужны три вещи: HTTP-статус, мета-тег robots и наличие запрета в robots.txt.
curl -I https://example.com/sample-page/Если страница должна быть закрыта, но отдает 200 OK и не содержит noindex, поисковик может оставить ее в индексе надолго. Если в robots.txt стоит только Disallow, но страница уже в индексе, этого часто недостаточно: робот перестанет ее обходить, но сам URL может продолжать жить в выдаче как известный адрес.
Что выбрать: noindex, robots.txt или удаление
| Подход | Когда использовать | Плюс | Ограничение |
|---|---|---|---|
noindex | Страница доступна, но не нужна в поиске | Поисковик видит директиву напрямую | Страницу нужно оставить открытой для пользователей |
robots.txt | Нужно ограничить обход, а не обязательно убрать из индекса | Простой контроль краулинга | Не гарантирует удаление уже проиндексированного URL |
| Удаление/403/404 | Страница больше не должна существовать | Самый однозначный сигнал | Нужно аккуратно обработать ссылки и редиректы |
Если задача именно SEO-очистка, чаще всего нужен noindex. robots.txt полезен как дополнительный слой, но не как единственный механизм для уже известных поисковику URL.
Пошаговое решение через код
Для отдельных страниц и архивов удобнее всего управлять индексированием через фильтр wp_robots. Это штатный способ WordPress, без выдуманных API и без зависимости от конкретного SEO-плагина.
1. Закрыть конкретную страницу по ID
Если у вас есть служебная страница с известным ID, добавьте в тему или мини-плагин такой код:
add_filter('wp_robots', function (array $robots) {
if (is_page(123)) {
$robots['noindex'] = true;
$robots['nofollow'] = true;
}
return $robots;
});Здесь 123 — ID страницы. nofollow добавляйте только если на странице действительно не должно быть переходов для обхода. Для большинства служебных страниц достаточно noindex.
2. Закрыть результаты поиска и архив автора
Это типичный случай для небольших сайтов, где внутренний поиск и авторские архивы не несут самостоятельной ценности.
add_filter('wp_robots', function (array $robots) {
if (is_search() || is_author()) {
$robots['noindex'] = true;
$robots['nofollow'] = true;
}
return $robots;
});Если на сайте несколько авторов и у каждого есть полезная страница профиля, архивы авторов лучше не закрывать автоматически. Тогда сначала проверьте структуру контента, а не ставьте запрет «на всякий случай».
3. Добавить запрет обхода в robots.txt
Для технических разделов можно дополнительно закрыть обход через фильтр robots_txt. Это не заменяет noindex, но помогает не тратить краулинговый бюджет на мусорные URL.
add_filter('robots_txt', function (string $output, bool $public) {
$output .= "\nDisallow: /search/\n";
$output .= "Disallow: /?s=\n";
$output .= "Disallow: /wp-admin/\n";
return $output;
}, 10, 2);Не закрывайте в robots.txt то, что должно быть удалено из индекса немедленно. Если URL уже в выдаче, поисковик может не увидеть мета-robots на странице, если вы одновременно запретили ему доступ к ней.
Если используете SEO-плагин
Если на сайте уже стоит SEO-плагин, не смешивайте несколько источников управления robots-метками без необходимости. Иначе можно получить конфликт: один плагин ставит noindex, другой переопределяет каноникал, третий меняет архивы. В такой ситуации сначала проверьте, где именно формируется тег <meta name="robots">.
Если нужен более системный подход к чистке дублей, служебных страниц и технических меток, удобнее использовать один инструмент, а не набор разрозненных сниппетов. Например, в Clearfy Pro есть функции для удаления дублей и технической чистки сайта, но даже там важно не включать все опции подряд без проверки структуры проекта.
Проверка результата после внедрения
После правок не ограничивайтесь просмотром страницы в браузере. Нужна проверка на уровне HTML и ответа сервера.
- Откройте страницу и посмотрите исходный код.
- Убедитесь, что в
<meta name="robots">есть нужные директивы. - Проверьте HTTP-заголовки и статус ответа.
- Если страница уже была в индексе, отправьте ее на повторную проверку в Search Console.
Пример проверки через командную строку:
curl -s https://example.com/sample-page/ | grep -i robotsЕсли вы закрывали страницу через wp_robots, в HTML должен появиться соответствующий мета-тег. Если закрывали через robots.txt, проверьте сам файл:
curl -s https://example.com/robots.txtДля уже проиндексированных URL важно время: поисковик не удаляет их мгновенно только потому, что вы добавили noindex. Но если директива отдается стабильно, страница постепенно выпадет из индекса.
Частые ошибки и как их исправить
Закрыли страницу только в robots.txt
Это самая частая ошибка. Если URL уже известен поисковику, одного Disallow может быть недостаточно. Решение: добавить noindex на саму страницу и оставить доступ для обхода, пока поисковик не увидит директиву.
Поставили noindex и одновременно отдали 404
Так делают, когда хотят «ускорить удаление». На практике это не всегда нужно. Если страница должна исчезнуть навсегда, 404 или 410 — нормальный вариант. Но если на нее еще ведут внутренние ссылки или она нужна пользователям, сначала используйте noindex, а не жесткое удаление.
Случайно закрыли важные архивы
Автоматические условия вроде is_author() или is_archive() легко переусердствуют. Перед включением проверьте, какие типы архивов у вас реально полезны: рубрики, теги, авторы, кастомные таксономии. Не закрывайте все подряд.
Оставили внутренние ссылки на закрытые страницы
Если страница больше не нужна, уберите ссылки из меню, блоков и шаблонов. Иначе вы продолжите расходовать обход на URL, который сами же считаете мусорным.
Практические советы по безопасности и производительности
Не храните логику индексации в случайном фрагменте темы, если проект живет дольше одной верстки. Лучше вынести код в небольшой mu-plugin или отдельный плагин для технических настроек. Тогда при смене темы правила не пропадут.
Если на сайте много технических исключений, заведите короткий список правил: что закрыто, почему закрыто и где это реализовано. Это экономит время при аудите и снижает риск случайно открыть закрытую страницу после обновления.
- не закрывайте в
robots.txtто, что уже нужно убрать из индекса; - не ставьте
nofollowбез причины; - не блокируйте доступ к странице, если поисковику нужно увидеть
noindex; - проверяйте результат на живом URL, а не только в админке;
- сохраняйте правила в коде, если они должны пережить смену темы.
Если задача выходит за рамки одной-двух страниц и превращается в регулярную чистку дублей, архивов и технических URL, имеет смысл сначала навести порядок в структуре сайта, а уже потом точечно закрывать индексацию. Так меньше шансов получить «мертвые» страницы в индексе и конфликтующие директивы.