На небольших сайтах проблема обычно выглядит одинаково: в индекс попадают страницы поиска, архивы автора, служебные шаблоны, тестовые записи или дубли с параметрами URL. Удалять их не всегда нужно — часто достаточно корректно закрыть от индексации и при этом не ломать навигацию и внутренние ссылки.
Ниже — рабочий сценарий для WordPress: сначала определяем, что именно надо закрыть, затем выбираем способ через SEO-плагин или код, после чего проверяем результат в HTML и заголовках ответа.
Когда страницу лучше закрыть от индексации, а не удалять
Не каждая «лишняя» страница требует удаления. Если URL нужен пользователю, но не должен конкурировать в поиске, обычно достаточно noindex. Это подходит для:
- страниц внутреннего поиска;
- архивов автора на небольших проектах;
- страниц с фильтрами и параметрами, если они создают дубли;
- служебных страниц, которые не несут самостоятельной ценности;
- черновых или временных материалов, которые уже опубликованы по ошибке.
Если же страница не должна существовать вовсе, правильнее удалить её и отдать 404 или 410, а не прятать через noindex. Иначе она останется доступной по прямой ссылке и будет висеть в обходных источниках.
Диагностика: что именно мешает индексации или, наоборот, попадает в поиск
Перед правками проверьте три вещи. Во-первых, есть ли у страницы канонический URL и не создаёт ли тема дубли через параметры. Во-вторых, не закрывает ли её уже SEO-плагин или robots.txt. В-третьих, не конфликтуют ли между собой мета-теги и HTTP-заголовки.
Что смотреть в исходном коде
Откройте страницу и найдите в HTML:
<meta name="robots" content="noindex,follow">или похожую директиву;<link rel="canonical" href="...">;- дублирующиеся теги, если их выводят сразу тема и плагин.
Если в HTML всё выглядит правильно, но страница всё равно индексируется, проверьте ответ сервера. Иногда директива приходит в заголовке X-Robots-Tag, а не в разметке.
Мини-чек-лист перед изменениями
- Определите список URL, которые нужно закрыть.
- Проверьте, нужен ли им доступ для пользователей.
- Убедитесь, что на странице нет важного контента, который должен ранжироваться.
- Посмотрите, не создаёт ли плагин SEO уже свой
noindex. - Сделайте бэкап, если будете менять код темы или плагина.
Как закрыть отдельную страницу через SEO-плагин
Если на сайте уже стоит SEO-плагин, это самый безопасный путь. В большинстве случаев достаточно открыть нужную запись, страницу или архив и выставить для неё noindex в настройках индексации. Плюс этого подхода в том, что плагин обычно сам управляет и мета-тегом, и каноническим URL.
Минус тоже есть: если у вас несколько SEO-расширений или тема вручную печатает robots-мета-теги, можно получить конфликт. Тогда в исходнике окажутся две директивы, и поисковик возьмёт не ту, на которую вы рассчитывали.
| Подход | Когда подходит | Плюс | Минус |
|---|---|---|---|
| SEO-плагин | Нужно закрыть отдельные записи, страницы, архивы | Безопасно и быстро | Возможны конфликты с темой |
| Код в теме/плагине | Нужна точечная логика по условиям | Гибко и прозрачно | Требует проверки и поддержки |
| robots.txt | Нужно ограничить обход, а не индексацию конкретной страницы | Полезно для служебных разделов | Не заменяет noindex для уже известных URL |
Пошаговое решение через код: добавить noindex только для нужных URL
Если нужен контроль без плагина или нужно закрывать страницы по условию, можно добавить фильтр в functions.php дочерней темы или в небольшой mu-plugin. Ниже пример для внутреннего поиска и страницы с шаблоном page-test.php.
<?php
add_filter( 'wp_robots', function( $robots ) {
if ( is_search() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
if ( is_page_template( 'page-test.php' ) ) {
$robots['noindex'] = true;
$robots['nofollow'] = true;
}
return $robots;
} );Этот способ хорош тем, что использует штатный фильтр WordPress wp_robots. Он не подменяет разметку вручную и обычно лучше переживает обновления ядра, чем самописный вывод тега в <head>.
Если нужно закрыть конкретную страницу по ID
Иногда проще привязаться к ID записи. Это удобно для тестовых страниц, которые не должны индексироваться никогда.
<?php
add_filter( 'wp_robots', function( $robots ) {
if ( is_page( 123 ) ) {
$robots['noindex'] = true;
$robots['nofollow'] = true;
}
return $robots;
} );Замените 123 на реальный ID. Если ID меняется часто, лучше использовать шаблон страницы, slug или отдельный признак через метаполе.
Когда нужен X-Robots-Tag вместо meta robots
Для HTML-страниц обычно хватает <meta name="robots">. Но если нужно закрыть от индексации PDF, изображения, архивы на уровне ответа сервера или отдельные файлы, удобнее использовать заголовок X-Robots-Tag. В WordPress это уже зона веб-сервера или плагина, который умеет работать с заголовками ответа.
Важно: не пытайтесь закрывать всё подряд через robots.txt. Если URL уже известен поисковику, запрет на обход не равен запрету на индексацию. Для страниц с реальным контентом нужен именно noindex.
Проверка результата после внедрения
После правки не ограничивайтесь просмотром страницы в браузере. Проверьте три уровня: HTML, заголовки и поведение поискового робота.
- Откройте страницу и посмотрите исходный код: должен быть только один корректный robots-тег.
- Проверьте заголовки ответа через DevTools или
curl -I https://example.com/page/, если используетеX-Robots-Tag. - Убедитесь, что канонический URL указывает на нужную страницу, а не на случайный дубль.
- Если страница уже была в индексе, отправьте её на переобход в панели для вебмастеров и дождитесь обновления статуса.
Для быстрой локальной проверки удобно посмотреть ответ сервера так:
curl -I https://example.com/test-page/В ответе ищите X-Robots-Tag, если вы использовали заголовок, и проверьте, нет ли неожиданных редиректов на другой URL.
Частые ошибки и как их исправить
Два SEO-плагина одновременно
Если один плагин ставит noindex, а другой — каноникал или robots-мета, результат становится непредсказуемым. Оставьте один источник управления индексацией. Второй либо отключите, либо уберите из него соответствующий модуль.
Закрыли страницу в robots.txt и ждёте удаления из поиска
Это частая ошибка. Robots.txt ограничивает обход, но не гарантирует удаление уже известного URL из индекса. Если страница должна исчезнуть, используйте noindex или отдайте 410.
Поставили noindex, но оставили дубль с canonical на себя
Если страница закрыта, но каноникал указывает на неё же, поисковик может продолжать воспринимать её как отдельный документ. Для дублей логичнее указывать canonical на основную версию или убрать страницу из индекса полностью.
Добавили код в родительскую тему
После обновления темы правка исчезнет. Для таких изменений используйте дочернюю тему или mu-plugin. Это особенно важно, если логика индексации завязана на бизнес-правила сайта.
Практические советы по безопасности и производительности
Если вы закрываете много страниц по условию, не делайте тяжёлые запросы к базе на каждом хите. Фильтр wp_robots должен работать быстро и без лишних обращений к метаданным, если условие можно определить стандартными функциями WordPress.
Для крупных сайтов полезно вести список исключений централизованно: по шаблонам страниц, типам записей или флагу в метаполе. Это проще сопровождать, чем вручную править десятки URL. Если на сайте уже есть технический мусор, сначала уберите дубли и лишние архивы, а потом закрывайте оставшееся — так проще отследить, что именно повлияло на индексацию.
Если нужен более широкий аудит дублей, служебных страниц и SEO-ошибок, обычно удобнее сначала пройтись по технической чистке сайта, а уже потом точечно закрывать отдельные URL. В экосистеме WPShop для этого есть Clearfy Pro: https://wpshop.ru/plugins/clearfy.
Что делать, если страница всё ещё в поиске
Это не всегда ошибка настройки. Поисковик может держать старую версию в выдаче до следующего обхода. Если директива уже стоит, проверьте, нет ли:
- кэшированной версии страницы без
noindex; - дублирующего URL с другим слэшем или параметром;
- редиректа, который ведёт на индексируемую копию;
- ошибки в шаблоне, из-за которой robots-тег не выводится на части страниц.
Если после проверки всё корректно, остаётся дождаться переобхода и обновления индекса. Форсировать это вручную имеет смысл только после того, как вы убедились, что на странице действительно стоит нужная директива и нет конфликтов на уровне темы или плагинов.