На небольших и средних сайтах чаще всего проблема не в «плохом SEO», а в лишних страницах, которые поисковик всё равно видит: результаты поиска по сайту, архивы с пустым или слабым содержимым, служебные страницы, черновые разделы, тестовые материалы. Если такие URL попадают в индекс, они начинают конкурировать с нормальными страницами и размывают качество обхода.
Ниже — рабочий сценарий: как точечно закрыть отдельные страницы от индексации в WordPress без SEO-плагина, когда лучше использовать noindex, а когда — вообще убрать URL из выдачи и из внутренних ссылок.
Когда проблема действительно в индексации, а не в контенте
Сначала стоит понять, что именно нужно закрывать. Не каждая «лишняя» страница требует одинакового решения. Если URL должен существовать для пользователей, но не должен ранжироваться, обычно подходит noindex,follow. Если страница не нужна вообще, лучше убрать её из навигации, внутренних ссылок и, при необходимости, отдавать 404 или 410.
Типичные кандидаты на закрытие
- страница внутреннего поиска WordPress с параметром
?s=; - архивы авторов на сайте с одним автором и без полезного контента;
- страницы тегов, если они пустые или почти дублируют рубрики;
- служебные страницы тестового окружения;
- временные посадочные страницы, которые ещё не готовы к индексации;
- страницы с тонким содержимым, которые не должны конкурировать с основными материалами.
Диагностика: как понять, что URL уже попал в индекс
Проверка начинается не с кода, а с фактов. Откройте Google Search Console и посмотрите отчёт по страницам. Если нужный URL уже индексируется, он будет виден в поиске по сайту или в отчёте об индексировании. Дополнительно проверьте исходный код страницы: в <head> должен быть корректный meta robots, а не случайный набор директив от темы или плагина.
Полезно проверить и HTTP-ответ. Если страница должна быть закрыта полностью, одного meta-тега мало: поисковик может ещё какое-то время держать URL в индексе. Для служебных страниц иногда лучше отдать noindex и убрать ссылки, а для совсем ненужных — вернуть 404 или 410.
Что смотреть в первую очередь
- есть ли URL в индексе по запросу
site:example.com/slug; - какой meta robots сейчас выводится в HTML;
- не добавляет ли тема или SEO-плагин свой
noindexповерх вашего правила; - есть ли на страницу внутренние ссылки из меню, виджетов, хлебных крошек и архивов;
- не генерируется ли дублирующий URL с параметрами.
Пошаговое решение через код
Если вам нужно закрыть конкретные типы страниц, проще всего сделать это через фильтр wp_robots. Он позволяет добавить или изменить директивы robots без вмешательства в шаблоны темы.
Ниже пример для нескольких распространённых сценариев: результаты поиска, архивы авторов на однопользовательском сайте и отдельная служебная страница по slug.
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_search() ) {
$robots['noindex'] = true;
$robots['nofollow'] = true;
return $robots;
}
if ( is_author() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
return $robots;
}
if ( is_page( 'test-page' ) ) {
$robots['noindex'] = true;
$robots['nofollow'] = true;
}
return $robots;
} );Если нужно закрыть только одну страницу по ID, это тоже можно сделать точечно. Такой вариант удобен, когда страница уже опубликована, но вы не хотите трогать весь тип контента.
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_page( 123 ) ) {
$robots['noindex'] = true;
$robots['nofollow'] = true;
}
return $robots;
} );Важно: не смешивайте в одном месте несколько разных способов управления robots, если не понимаете порядок их срабатывания. Если SEO-плагин уже выводит свои директивы, сначала проверьте, не проще ли настроить его штатно. Код нужен тогда, когда задача точечная и вы хотите контролировать поведение без лишнего интерфейса.
Когда лучше отдавать 404 или 410, а не ставить noindex
noindex подходит для страниц, которые должны существовать для пользователя, но не для поиска. Если URL больше не нужен и у него нет замены, логичнее удалить его из публичного доступа. Для старого контента, который вы сознательно убрали навсегда, 410 Gone обычно честнее, чем бесконечно держать страницу с noindex.
В WordPress это можно сделать через шаблонный редирект или через template_redirect, если речь о конкретном URL. Пример ниже возвращает 410 для одной страницы.
<?php
add_action( 'template_redirect', function() {
if ( is_page( 'old-landing' ) ) {
status_header( 410 );
nocache_headers();
echo 'Страница удалена.';
exit;
}
} );Такой подход уместен только если вы уверены, что страница не нужна и на неё нет полезных внешних ссылок, которые стоит перенаправить на релевантную замену.
Сравнение подходов: плагин, код, удаление страницы
| Подход | Когда использовать | Плюсы | Минусы |
|---|---|---|---|
| SEO-плагин | Если нужно управлять мета-robots через интерфейс | Удобно для редактора, меньше кода | Легко получить конфликт настроек |
Код через wp_robots | Для точечных правил и служебных страниц | Контроль, предсказуемость, без лишнего UI | Нужно аккуратно тестировать |
| 404/410 | Если URL больше не должен существовать | Чистое удаление из индекса и структуры | Нужно проверить внешние ссылки и редиректы |
Проверка результата после внедрения
После добавления правила не ограничивайтесь просмотром кода страницы. Откройте URL в браузере, посмотрите исходник и убедитесь, что директива действительно появилась. Затем проверьте ответ сервера и кэш: если на сайте стоит серверный или плагинный кэш, старый HTML может продолжать отдавать прежний meta robots.
Минимальный чек-лист проверки:
- в исходном коде есть
noindexдля нужного URL; - страница не закрыта случайно для всех типов записей;
- кэш очищен и отдаёт обновлённый HTML;
- внутренние ссылки на страницу убраны, если она больше не нужна;
- в Search Console URL переобходится без ошибок;
- если использовали
410, сервер реально отдаёт этот статус.
Для быстрой проверки статуса можно использовать DevTools или curl:
curl -I https://example.com/old-landing/В ответе смотрите строку со статусом и заголовки кэша. Если вы ожидаете 410, но видите 200, значит правило не сработало или его перехватывает другой слой.
Частые ошибки и как их исправить
1. Директива noindex не меняется из-за SEO-плагина
Некоторые плагины выводят свои мета-теги позже или раньше вашего кода. В итоге в HTML появляется конфликт. Решение простое: оставьте один источник правды. Либо настраивайте robots через плагин, либо убирайте его управление для конкретного типа страниц и используйте код.
2. Страница закрыта, но всё ещё в индексе
Это нормально на коротком промежутке. Поисковику нужно время на переобход. Если страница уже давно закрыта, а в индексе остаётся, проверьте, не ведут ли на неё внутренние ссылки и не отдаёт ли кэш старую версию.
3. Закрыли не ту страницу
Ошибка часто возникает из-за использования is_page() со slug, который совпадает с другим URL, или из-за неверного ID. Перед публикацией правила проверьте условие на тестовом сайте и откройте именно тот URL, который хотите закрыть.
4. Поставили noindex, но оставили страницу в меню
Это не критично, но бессмысленно с точки зрения структуры. Если страница не должна быть видна пользователям, уберите её из меню, хлебных крошек и блоков «похожие материалы».
Практика безопасности и производительности
Любое правило, которое меняет индексацию, лучше хранить в дочерней теме или в небольшом mu-plugin, а не в файле, который часто редактируют вручную. Так вы не потеряете настройку после обновления темы. Если у вас несколько сред — локальная, staging и production — проверьте, что правило не уехало на боевой сайт раньше времени.
Если на сайте много служебных страниц, полезно заранее привести в порядок дубли и мусорные URL. Для этого иногда удобнее сочетать точечные правила с очисткой дублей и технических страниц через инструменты вроде Clearfy Pro, но только если вам действительно нужен интерфейс для редакторов. Для разработчика код через wp_robots обычно прозрачнее и надёжнее.
И ещё один практический момент: не закрывайте от индексации страницы, которые должны приносить трафик по длинному хвосту. Частая ошибка — отправить в noindex архивы или категории только потому, что они «не идеальны». Если страница полезна и содержит уникальный текст, её лучше доработать, а не прятать.