В WordPress часто нужно закрыть от поисковиков не весь сайт, а только отдельные страницы: результаты поиска, архивы с дублями, тестовые разделы, служебные URL, страницы фильтров или внутренние материалы. Ошибка здесь обычно одна: вместо точечного решения ставят запрет «на всякий случай» и потом удивляются, почему страница всё ещё в индексе или, наоборот, пропали нужные URL.
Ниже разберём, чем отличаются robots.txt, noindex и запрет на уровне сервера, когда использовать каждый вариант и как проверить, что всё сработало.
Когда проблема действительно в индексации
Сначала стоит убедиться, что речь именно о SEO-индексации, а не о кэше, редиректе или дублирующемся контенте. Если страница открывается по нескольким адресам, поисковик может держать в индексе не ту версию. Если URL уже попал в поиск, простого запрета в robots.txt обычно недостаточно: робот перестанет заходить на страницу, но старый адрес может ещё долго отображаться в выдаче.
Типичные сценарии
- страницы поиска по сайту вида
?s=; - архивы тегов и авторов, которые не несут ценности;
- страницы пагинации с тонким контентом;
- тестовые или временные разделы;
- дубли с параметрами сортировки, UTM и фильтрами;
- служебные страницы входа, регистрации, корзины, если они не нужны в поиске.
Чем отличаются robots.txt, noindex и запрет на сервере
Эти инструменты решают разные задачи. robots.txt управляет обходом, но не гарантирует удаление URL из индекса. noindex говорит поисковику не показывать страницу в выдаче, но для этого робот должен иметь доступ к самой странице. А запрет на уровне сервера нужен, когда URL вообще не должен отдавать контент или должен закрываться до загрузки WordPress.
| Подход | Что делает | Когда использовать | Ограничение |
|---|---|---|---|
robots.txt | Запрещает обход | Для служебных разделов, которые не должны сканироваться | Не убирает уже проиндексированные URL |
noindex | Просит не показывать страницу в выдаче | Для страниц, которые доступны, но не нужны в поиске | Страница должна быть доступна для обхода |
.htaccess / сервер | Ограничивает доступ или отдачу | Для тестовых, приватных и технических разделов | Можно случайно закрыть лишнее |
Пошаговое решение: как закрыть страницу от индексации
Шаг 1. Закройте обход в robots.txt, если URL не должен сканироваться
Если нужно убрать из обхода технические разделы, добавьте правила в robots.txt. Это уместно для поиска по сайту, служебных параметров и некоторых архивов. Но не рассчитывайте, что это само по себе удалит URL из поиска.
User-agent: *
Disallow: /?s=
Disallow: /search/
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.phpЕсли у вас есть отдельные URL с параметрами, добавляйте их аккуратно. Не закрывайте случайно весь каталог или важные страницы, которые должны индексироваться.
Шаг 2. Добавьте noindex на конкретную страницу
Для страниц, которые должны открываться пользователю, но не попадать в выдачу, нужен noindex. В WordPress это можно сделать через SEO-плагин или кодом. Если нужен точечный вариант без плагина, проще всего добавить мета-тег в <head> для выбранных шаблонов или страниц.
add_action('wp_head', function () {
if (is_search() || is_author() || is_tag()) {
echo '<meta name="robots" content="noindex,follow">' . "\n";
}
});Этот пример закрывает поиск, архивы авторов и теги. На практике набор условий лучше подстроить под сайт: иногда архивы категорий нужны в индексе, а иногда нет.
Шаг 3. Если страница служебная, ограничьте доступ на уровне сервера
Для тестовых поддоменов, временных каталогов и приватных разделов лучше не полагаться на SEO-метки. Проще и безопаснее закрыть доступ через HTTP-авторизацию или отдельные правила сервера. Для Apache можно использовать базовую защиту каталога, а не только SEO-ограничения.
<FilesMatch "^(wp-login\.php|xmlrpc\.php)$">
Require all denied
</FilesMatch>Этот пример нельзя ставить бездумно: wp-login.php нужен для входа в админку. Такой запрет уместен только если вы точно понимаете, что делаете, например на отдельной копии сайта. Для боевого сайта чаще ограничивают доступ по IP или через дополнительную авторизацию на уровне хостинга.
Как закрыть от индексации отдельную запись, страницу или архив
Если задача точечная, удобнее работать по условиям WordPress. Например, закрыть одну конкретную страницу с ID 42 или весь архив определённого типа записей.
add_action('wp_head', function () {
if (is_page(42)) {
echo '<meta name="robots" content="noindex,follow">' . "\n";
}
if (is_post_type_archive('news')) {
echo '<meta name="robots" content="noindex,follow">' . "\n";
}
});Если нужен более управляемый вариант, можно завести список ID в массиве и поддерживать его в коде темы или мини-плагина. Это лучше, чем размазывать логику по шаблонам.
Диагностика: почему страница всё ещё в индексе
После внедрения часто кажется, что ничего не изменилось. На деле проблема обычно в одном из трёх мест: робот ещё не переобошёл страницу, мета-тег не выводится на нужном шаблоне или URL доступен по альтернативной версии.
- проверьте исходный код страницы и убедитесь, что есть
<meta name="robots" content="noindex,follow">; - проверьте, не отдаёт ли страница редирект на другой URL;
- убедитесь, что нет дубля с
www/ безwww, HTTP / HTTPS или со слэшем и без него; - посмотрите, не закрыт ли URL в
robots.txtраньше, чем поисковик успел увидетьnoindex; - проверьте канонический URL, если на странице стоит
rel="canonical"на другую версию.
Если страница уже в индексе, удаление из выдачи может занять время. Это нормальная ситуация: поисковик должен заново обойти URL и увидеть сигнал noindex или недоступность страницы.
Как проверить результат после внедрения
Проверка должна быть не на глаз, а по конкретным признакам. Откройте страницу в браузере и посмотрите исходный код. Затем проверьте ответ сервера и индексацию через инструменты поисковой системы.
- Откройте URL в режиме просмотра исходника и найдите мета-тег robots.
- Проверьте, что страница отдаёт код
200 OK, если она должна быть доступна, или нужный код запрета, если доступ закрыт. - Убедитесь, что в
robots.txtнет лишнего запрета на важные разделы. - Проверьте канонический адрес и отсутствие дублей.
- Если используете SEO-плагин, убедитесь, что его настройки не переопределяют ваш код.
Для быстрой проверки можно временно вывести заголовки ответа через браузерные инструменты разработчика или командой curl:
curl -I https://example.com/stranica/В ответе смотрите на статус, редиректы и заголовки, если они используются вашим сервером или плагином.
Частые ошибки и как их исправить
Закрыли страницу в robots.txt и ждёте удаления из выдачи
Это самая частая ошибка. Disallow не равен noindex. Если URL уже в индексе, поисковик может продолжать показывать его без описания или с устаревшим фрагментом. Сначала дайте роботу увидеть noindex или верный статус ответа, потом уже ограничивайте обход.
Поставили noindex, но страница всё равно индексируется
Проверьте, действительно ли тег выводится на нужном шаблоне. В WordPress легко ошибиться с условием: например, закрыть архивы тегов, но забыть архивы таксономии или отдельный шаблон страницы. Ещё одна причина — кэш: старая версия страницы может продолжать отдаваться из кеша.
Случайно закрыли важные страницы
Если в robots.txt попал слишком широкий шаблон, поисковик перестаёт обходить нужные URL. Исправление простое: сузить правило и проверить, что важные разделы снова доступны для сканирования. После этого обновите карту сайта и дождитесь переобхода.
Использовали .htaccess там, где нужен только noindex
Жёсткий запрет доступа подходит не для всех задач. Если страница должна открываться пользователю, но не индексироваться, серверный запрет только навредит. В таких случаях используйте noindex и не ломайте доступ.
Практические советы по безопасности и производительности
Если вы закрываете служебные разделы, не ограничивайтесь SEO-метками. Тестовые копии сайта лучше держать под авторизацией или на отдельном поддомене без индексации. Это снижает риск случайной публикации черновиков и утечки внутренних URL.
Для больших сайтов не плодите десятки правил в шаблонах темы. Вынесите логику в небольшой mu-plugin или отдельный мини-плагин: так проще сопровождать, и она не сломается при смене темы. Если у вас уже стоит плагин для чистки дублей и SEO-настроек, например Clearfy Pro, проверьте, не дублирует ли он ваши правила noindex и каноникал.
Ещё один полезный момент: не закрывайте от индексации всё подряд только потому, что страница кажется «второстепенной». Иногда архив категории или теговый листинг даёт нормальный трафик и помогает поисковику лучше понимать структуру сайта. Решение должно опираться на конкретную задачу, а не на общую осторожность.
Короткий чек-лист перед публикацией
- понятно, какой именно URL нужно закрыть;
- выбран правильный инструмент:
robots.txt,noindexили серверный запрет; - на странице нет лишних дублей;
- мета-тег robots выводится только там, где нужно;
- кэш очищен после изменений;
- проверен исходный код и ответ сервера;
- важные страницы сайта не попали под общий запрет.
Если задача сводится к нескольким служебным URL, лучше решить её точечно и прозрачно. Тогда и поисковики, и админка сайта будут вести себя предсказуемо, а исправлять последствия не придётся через массовую переиндексацию.