Сценарий типичный: страница тикета доступна по URL, клиент и агент должны видеть её после авторизации, но поисковики не должны тратить на неё краулинговый бюджет и тащить в индекс служебные страницы. Если просто поставить noindex в мета-тег, этого часто недостаточно: URL всё равно может попадать в обход, а в выдаче иногда остаются старые сниппеты. Если же закрыть всё через robots.txt, можно случайно помешать нормальной обработке уже известных страниц.
Ниже — рабочая схема для WordPress: сначала разбираем, что именно закрывать, потом настраиваем запрет на индексацию, добавляем заголовок X-Robots-Tag для служебных страниц и проверяем результат в Search Console и по ответам сервера.
Что именно нужно закрывать
Не все страницы тикетов одинаковы. Обычно есть три разных типа URL:
- страница списка тикетов в личном кабинете;
- страница конкретного тикета;
- страницы авторизации, регистрации и восстановления доступа, которые открываются рядом с тикетами.
Для поисковика это всё служебные страницы. Их задача — работать для пользователя, а не собирать органический трафик. Поэтому логика простая: доступ по прямой ссылке оставляем, индексацию убираем, а публичные страницы сайта не трогаем.
Диагностика: почему страницы тикетов всё ещё попадают в индекс
Перед правками проверьте, где именно проблема. Часто встречаются такие причины:
- на странице есть только мета-тег
noindex, но поисковик уже успел сохранить URL в индексе; - страница отдаёт код
200 OKи содержит внутренние ссылки, поэтому робот продолжает её обходить; - в шаблоне темы нет явного запрета на индексацию для служебных страниц;
- кэш отдаёт старую версию HTML без
noindex; - страницы тикетов доступны без авторизации и содержат текст, который можно проиндексировать.
Как быстро проверить текущую ситуацию
Откройте страницу тикета в браузере и посмотрите исходный HTML. Ищите:
<meta name="robots" content="noindex, nofollow">;- заголовок ответа
X-Robots-Tag; - код ответа сервера
200,401или403.
Если есть доступ к консоли, удобно проверить заголовки так:
curl -I https://example.com/ticket/123
В ответе должно быть что-то вроде X-Robots-Tag: noindex, nofollow или хотя бы мета-тег в HTML. Для служебных страниц лучше иметь оба уровня защиты.
Пошаговое решение: закрываем страницы тикетов от индексации
Надёжнее всего не полагаться на один инструмент. Рабочая схема состоит из трёх шагов: запрет в шаблоне, заголовок на уровне сервера/WordPress и проверка кэша.
Шаг 1. Добавьте meta robots на нужные страницы
Если у вас есть шаблон страницы тикета или отдельный endpoint, можно вывести noindex, nofollow через wp_head. Пример ниже подходит для темы или небольшого mu-plugin.
<?php
add_action( 'wp_head', function () {
if ( is_page( 'tickets' ) || is_singular( 'ticket' ) ) {
echo '<meta name="robots" content="noindex, nofollow" />' . "\n";
}
}, 1 );
Здесь важно не использовать слишком широкий условный тег. Если повесить запрет на весь сайт, можно случайно закрыть публичные страницы, которые должны индексироваться.
Шаг 2. Добавьте X-Robots-Tag в HTTP-заголовок
Заголовок полезен там, где HTML может кэшироваться или меняться не сразу. WordPress позволяет отправить его через send_headers.
<?php
add_action( 'send_headers', function () {
if ( is_page( 'tickets' ) || is_singular( 'ticket' ) ) {
header( 'X-Robots-Tag: noindex, nofollow', true );
}
} );
Если страница уже отдаёт заголовки раньше этого хука, значит в теме или плагине есть ранний вывод. Тогда сначала уберите лишний echo до wp_head и проверьте, нет ли конфликтующего кода в functions.php.
Шаг 3. Не закрывайте доступ для авторизованных пользователей
Индексация и доступ — разные вещи. Клиент должен открыть тикет по прямой ссылке, но робот — нет. Если у вас есть публичный просмотр тикета, лучше ограничить его авторизацией или проверкой токена доступа. Минимальный вариант выглядит так:
<?php
add_action( 'template_redirect', function () {
if ( is_singular( 'ticket' ) && ! is_user_logged_in() ) {
wp_safe_redirect( wp_login_url( get_permalink() ) );
exit;
}
} );
Такой подход не заменяет noindex, но убирает лишний риск, что содержимое тикета увидит кто-то без прав доступа.
Сравнение подходов: что выбрать в реальном проекте
| Подход | Плюсы | Минусы | Когда использовать |
|---|---|---|---|
| Только meta robots | Просто внедрить, не требует сервера | Зависит от HTML и кэша | Если тикеты уже отдаются через шаблон WordPress |
| Только X-Robots-Tag | Работает на уровне ответа сервера | Нужно аккуратно настроить условия | Если HTML кэшируется или генерируется не всегда одинаково |
| Meta robots + X-Robots-Tag | Самый надёжный вариант | Нужно следить за кэшем и конфликтами | Для служебных страниц тикетов и кабинета поддержки |
Проверка результата после внедрения
После правок не ограничивайтесь просмотром страницы в браузере. Проверьте три уровня:
- HTML — в исходнике есть
noindex, nofollow. - Заголовки — в ответе сервера есть
X-Robots-Tag. - Индексация — в Google Search Console URL помечен как исключённый или не попадает в повторную индексацию.
Если используете кэш-плагин, очистите кэш страницы тикета и кэш CDN, если он есть. Иначе вы можете проверить уже старую версию, а не ту, что увидит робот.
Что смотреть в Search Console
Откройте проверку URL и убедитесь, что робот видит актуальную страницу с запретом на индексацию. Если Search Console показывает старый HTML без noindex, значит проблема почти всегда в кэше или в том, что правило срабатывает не на тот шаблон.
Частые ошибки и как их исправить
- Закрыли только robots.txt. Это не убирает уже известные URL из индекса. Нужен
noindexили корректный ответ сервера. - Поставили
noindexна весь кабинет. В итоге исчезли из поиска и полезные страницы, которые должны индексироваться. - Не очистили кэш. Робот продолжает видеть старую версию без запрета.
- Использовали слишком общий условный тег. Например,
is_page()без точного slug и закрыли лишние страницы. - Оставили публичный доступ к тикетам. Даже при
noindexэто риск утечки данных.
Безопасность и производительность: что не стоит упускать
Если тикеты содержат персональные данные, закрытие от индексации — это только часть задачи. Проверьте, не попадают ли в HTML:
- email клиента;
- номер заказа или внутренний ID;
- вложения и прямые ссылки на файлы без проверки прав;
- текст ответа агента, если страница доступна без авторизации.
С точки зрения производительности лучше не генерировать тяжёлые служебные страницы для ботов. Если тикетный раздел большой, имеет смысл отключить лишние блоки, которые не нужны на страницах поддержки: похожие записи, хлебные крошки с публичными ссылками, виджеты популярных материалов. Это уменьшит объём HTML и снизит риск случайных внутренних ссылок на служебные URL.
Когда лучше использовать плагин, а когда код
Если у вас уже есть SEO-плагин с настройкой noindex для отдельных типов записей, можно обойтись без кода. Но для тикетных систем часто нужен более точный контроль: закрыть только один шаблон, оставить доступ по прямой ссылке и не трогать остальные страницы кабинета. В таком случае небольшой фрагмент в mu-plugin обычно надёжнее, чем набор разрозненных настроек в админке.
Если нужен более широкий контроль над дублями, служебными страницами и технической чисткой сайта, в экосистеме WPShop для этого часто используют Clearfy Pro. Но даже в этом случае правило остаётся тем же: сначала проверьте, какие именно URL вы закрываете, и только потом включайте массовые настройки.
Мини-чек-лист перед публикацией
- На страницах тикетов есть
noindex, nofollow. - В ответе сервера присутствует
X-Robots-Tag. - Кэш очищен на сайте и в CDN.
- Публичный доступ к содержимому тикета ограничен.
- В Search Console проверен конкретный URL тикета.
Если все пункты выполнены, страницы тикетов останутся рабочими для клиентов и команды поддержки, но перестанут мешать индексации сайта.