Как настроить X-Robots-Tag в WordPress для закрытия страниц от индексации

Если нужно закрыть от индексации не только отдельные страницы, но и файлы, архивы или URL с параметрами, мета-тега noindex часто недостаточно. В таких случаях удобнее работать через HTTP-заголовок X-Robots-Tag: он применяется раньше, чем HTML, и подходит для сценариев, где вы не контролируете разметку страницы напрямую.

На практике это полезно для служебных страниц, PDF-файлов, страниц поиска по сайту, некоторых архивов и технических URL, которые не должны попадать в индекс. Ниже — как понять, нужен ли вам именно заголовок, а не обычный noindex, и как настроить его без лишнего риска.

Когда X-Robots-Tag лучше, чем meta robots

X-Robots-Tag работает на уровне ответа сервера. Это значит, что поисковый робот получает инструкцию ещё до загрузки HTML. Для WordPress это удобно в трёх случаях:

  • нужно закрыть от индексации не HTML-страницу, а файл: PDF, изображение, архив;
  • нужно задать правила для группы URL по шаблону, а не править шаблон темы;
  • нужно закрыть технические страницы, которые генерируются плагином или сервером.

Если задача простая — например, закрыть одну запись или страницу — обычно достаточно мета-тега через SEO-плагин. Если же речь о наборе URL с параметрами, вложениях медиа или нестандартных ответах, заголовок даёт больше контроля.

Диагностика: что именно мешает индексации сейчас

Перед настройкой проверьте, что проблема действительно в отсутствии запрета на индексацию, а не в другом сигнале. Частая ошибка — закрывать URL в robots.txt и ждать, что он исчезнет из индекса. Запрет в robots.txt не гарантирует удаление уже известных страниц, а иногда мешает роботам увидеть noindex на самой странице.

Что проверить вручную

  • отдаёт ли URL код 200 OK, 301 или 404;
  • есть ли на странице мета-тег robots с noindex;
  • возвращает ли сервер заголовок X-Robots-Tag;
  • не закрыт ли URL в robots.txt раньше, чем робот увидит инструкцию;
  • нет ли канонического адреса, который указывает на индексируемую страницу.

Проверить заголовки можно через DevTools, curl или любой HTTP-клиент. Для WordPress это особенно важно, если заголовок добавляется кодом в теме или плагине: визуально на странице вы его не увидите.

curl -I https://example.com/technical-page/

В ответе ищите строку вида:

X-Robots-Tag: noindex, nofollow

Если заголовка нет, значит правило не сработало или применяется не к тому URL.

Как добавить X-Robots-Tag в WordPress: рабочие варианты

Есть три нормальных пути: через сервер, через PHP-хук WordPress или через SEO-плагин, если он умеет это делать для нужного сценария. Для точечной настройки на уровне сайта чаще всего удобнее PHP-вариант: он прозрачен, его легко ограничить по условиям и не нужно править конфигурацию веб-сервера.

СпособКогда подходитМинус
Конфиг сервераНужно закрыть файлы, архивы, целые шаблоны URLТребует доступа к nginx/apache
PHP в WordPressНужно закрыть отдельные типы страниц или условияНе работает для статических файлов вне WordPress
SEO-плагинНужно управлять индексированием без кодаНе всегда покрывает нестандартные URL

Вариант 1: добавить заголовок через WordPress

Если URL обслуживается WordPress, можно отправить заголовок через хук send_headers. Этот способ подходит для служебных страниц, результатов поиска, архивов автора или любых условных шаблонов.

<?php
add_action( 'send_headers', function () {
    if ( is_search() || is_author() || is_tag() ) {
        header( 'X-Robots-Tag: noindex, nofollow', true );
    }

    if ( is_page( 'thank-you' ) ) {
        header( 'X-Robots-Tag: noindex, nofollow', true );
    }
} );

Здесь важно не переусердствовать. Если вы добавите заголовок на все страницы без разбора, поисковик перестанет индексировать сайт целиком. Лучше ограничивать условия явно и проверять каждый сценарий отдельно.

Вариант 2: настроить на уровне nginx

Если нужно закрыть от индексации PDF или другой файл по маске, удобнее сделать это в конфигурации сервера. Пример для nginx:

location ~* \.pdf$ {
    add_header X-Robots-Tag "noindex, nofollow" always;
}

Параметр always важен: без него заголовок может не добавляться на некоторые ответы, например при редиректах или ошибках. Для Apache логика аналогичная, но синтаксис будет другим и зависит от включённых модулей.

Вариант 3: закрыть вложения медиафайлов

Если в индексе появляются страницы вложений изображений, а они не нужны в поиске, можно закрыть именно attachment-страницы. В WordPress это делается отдельно от самих файлов. Для самих медиафайлов заголовок на уровне PHP не поможет, потому что они часто отдаются напрямую веб-сервером.

Для attachment-страниц можно использовать такой подход:

<?php
add_action( 'template_redirect', function () {
    if ( is_attachment() ) {
        header( 'X-Robots-Tag: noindex, nofollow', true );
    }
} );

Если при этом сами файлы должны оставаться доступными, не ставьте запрет на весь каталог с изображениями. Иначе можно сломать загрузку картинок на сайте и в письмах.

Пошаговая настройка без лишнего риска

  1. Определите тип URL: страница WordPress, архив, вложение или статический файл.
  2. Выберите уровень применения: сервер, PHP-хук или SEO-плагин.
  3. Добавьте правило только для нужных условий.
  4. Очистите кеш сайта, сервера и CDN, если он есть.
  5. Проверьте ответ заголовков через curl -I или DevTools.
  6. Убедитесь, что страница не закрыта одновременно через robots.txt и noindex без необходимости.

Если на сайте стоит кеширующий плагин или серверный кеш, после изменения правил обязательно сбросьте кеш. Иначе вы будете смотреть на старый ответ и решите, что код не работает.

Как проверить, что решение сработало

Проверка должна быть не визуальной, а технической. Откройте нужный URL и посмотрите заголовки ответа. В идеале вы должны увидеть именно тот набор директив, который задали: noindex, nofollow или другой вариант.

  • через curl -I проверьте наличие X-Robots-Tag;
  • в DevTools откройте вкладку Network и посмотрите Response Headers;
  • если используется SEO-плагин, сравните его настройки с фактическим ответом сервера;
  • проверьте страницу в Search Console после переобхода, но не ждите мгновенного обновления индекса.

Если заголовок есть, но страница всё ещё отображается в поиске, это не всегда ошибка настройки. Поисковик может не обновить данные сразу. Важно убедиться, что новый ответ стабильно отдаётся при каждом запросе.

Частые ошибки и как их исправить

Закрыли URL в robots.txt и забыли про саму страницу

Это самая частая проблема. Если робот не может зайти на страницу, он может не увидеть инструкцию noindex. Для уже известных URL это часто приводит к тому, что страница остаётся в индексе дольше, чем ожидается. Исправление простое: не блокируйте такие URL в robots.txt, если хотите именно убрать их из индекса.

Добавили заголовок слишком широко

Иногда правило пишут на весь сайт, а потом обнаруживают, что из поиска пропали важные страницы. Проверяйте условия в коде: is_search(), is_attachment(), конкретные слаги страниц, маски файлов. Не используйте глобальный noindex без теста на staging.

Не учли кеш

Если на сайте есть page cache, CDN или reverse proxy, новый заголовок может не попасть в ответ сразу. После изменения правил очищайте все уровни кеша. Иначе диагностика будет ложной.

Путают canonical и noindex

canonical указывает предпочтительный URL, но не запрещает индексацию сам по себе. Если задача — убрать страницу из поиска, нужен именно noindex или X-Robots-Tag. Каноникал полезен для дублей, но не заменяет запрет на индексацию.

Безопасность и производительность

Сам по себе X-Robots-Tag почти не влияет на производительность, если правило написано аккуратно. Но есть практические нюансы. Не добавляйте тяжёлую логику в хук send_headers: там не должно быть запросов к базе, сложных циклов и внешних HTTP-вызовов. Условие должно отрабатываться быстро.

Если вы правите конфиг сервера, сначала сохраните резервную копию. Ошибка в nginx или Apache может положить сайт сильнее, чем неудачный PHP-код. Для production безопаснее сначала проверить правило на staging и только потом переносить его на боевой сайт.

Если нужен более широкий контроль над дублями, индексированием и технической чисткой, иногда удобнее использовать специализированный плагин вроде Clearfy Pro, но только если его настройки реально закрывают ваш сценарий. В любом случае проверяйте фактический HTTP-ответ, а не только галочки в админке.

Что делать, если заголовок не виден

Если X-Robots-Tag не появляется в ответе, проверьте по порядку:

  • тот ли шаблон или условие срабатывает;
  • не отправлены ли уже заголовки раньше в другом плагине или теме;
  • не перехватывает ли ответ кеш;
  • не обслуживается ли файл напрямую сервером, минуя WordPress;
  • не стоит ли редирект, который меняет конечный URL.

В спорных случаях проще временно добавить тестовый заголовок и проверить его на отдельной странице. Если он виден там, значит проблема не в WordPress, а в условиях применения правила.

Оптимизация отображения библиотеки медиафайлов в WordPress
13.12.2025
WP Error Log: как анализировать и искать решения ошибок в WordPress
14.11.2025
Как использовать WPRemark для создания динамических форм в WordPress
21.01.2026
Как удалить автосохранения и ревизии записей из базы данных WordPress
10.02.2026
Как использовать WP Rollback для отката версии плагинов в WordPress
24.04.2026

Мы занимаемся разработкой приложений и плагинов для WordPress. Ниже предлагаем ознакомиться с ними.