Если форма WPForms стоит на служебной странице, в личном кабинете или на лендинге, который не должен попадать в поиск, одной метатега noindex часто недостаточно. Нужно понять, где именно страница индексируется: в HTML, в HTTP-заголовках, в sitemap или через внутренние ссылки. Иначе можно закрыть не то, а потом долго искать, почему URL всё равно сидит в выдаче.
Ниже разберём рабочую схему для WordPress: как диагностировать проблему, чем закрывать страницы с формами, как не сломать отправку и как проверить результат.
Когда страница с формой вообще не должна индексироваться
Типичный сценарий — форма заявки, форма возврата, внутренний опрос, страница для сотрудников, форма подписки в закрытом разделе. Для таких URL поисковая выдача не даёт пользы, зато создаёт лишние дубли и мусорные сниппеты. Особенно это заметно, если страница доступна по нескольким адресам: с параметрами, через архив, через поиск по сайту или из карты сайта.
Что именно нужно закрывать
- саму страницу с формой;
- дубли URL с параметрами, если они есть;
- страницу благодарности, если она не должна быть публичной;
- внутренние ссылки на служебные формы, если они не нужны в навигации.
Диагностика: почему URL с формой попал в индекс
Сначала проверьте, каким способом страница вообще разрешена к индексации. На практике встречаются четыре причины:
- в шаблоне страницы нет
noindex; - страница есть в XML sitemap;
- на URL ведут внутренние ссылки из меню, футера или блога;
- сервер отдаёт страницу без ограничений, хотя она должна быть служебной.
Откройте страницу в браузере и посмотрите исходный код: есть ли <meta name="robots" content="noindex, nofollow">. Затем проверьте заголовки ответа. Если используется SEO-плагин, он может ставить X-Robots-Tag на уровне HTTP, и это часто надёжнее для отдельных шаблонов.
Полезно также проверить URL в Google Search Console: если страница уже в индексе, там обычно видно, что именно мешает её убрать — запрет в robots.txt, отсутствие canonical, дубли или просто старый индекс.
Что выбрать: meta robots, X-Robots-Tag или robots.txt
Для страниц с WPForms чаще всего нужен noindex, а не запрет обхода через robots.txt. Это важная разница: если закрыть URL в robots.txt, поисковик может не увидеть метатег на странице и оставить её в индексе как «URL без описания». Для служебных страниц это плохой вариант.
| Способ | Когда подходит | Минус |
|---|---|---|
| meta robots noindex | Обычная страница WordPress с формой | Нужно, чтобы робот мог зайти на страницу |
| X-Robots-Tag | Шаблоны, PDF, нестандартные ответы сервера | Нужен код или серверная настройка |
| robots.txt Disallow | Только для экономии обхода, не для удаления из индекса | Не гарантирует удаление URL из поиска |
Пошаговое решение для WordPress
Вариант 1. Закрыть конкретную страницу через SEO-плагин
Если у вас установлен SEO-плагин, самый безопасный путь — задать для страницы noindex в настройках документа. Это не ломает форму, не мешает отправке и не требует правки темы. Для служебных страниц это обычно лучший вариант.
После сохранения проверьте, что страница исчезла из sitemap, если плагин умеет исключать noindex-URL автоматически. Если нет — уберите её вручную из карты сайта или из блока внутренних ссылок.
Вариант 2. Добавить noindex через код для выбранного шаблона
Если страница с формой создаётся по отдельному шаблону, можно добавить метатег программно. Это удобно, когда таких страниц несколько и не хочется настраивать каждую вручную.
<?php
add_action( 'wp_head', function () {
if ( is_page_template( 'templates/page-contact-form.php' ) ) {
echo '<meta name="robots" content="noindex, nofollow" />' . "\n";
}
}, 1 );Этот вариант работает только для фронтенда и не влияет на отправку формы WPForms. Но важно, чтобы шаблон действительно совпадал с тем, что используется на странице. Иначе метатег просто не появится.
Вариант 3. Отдать X-Robots-Tag заголовок
Если нужно закрыть страницу на уровне HTTP-ответа, используйте заголовок X-Robots-Tag. Это полезно, когда шаблон сложный или страница формируется не только WordPress-ом.
<?php
add_action( 'send_headers', function () {
if ( is_page( array( 123, 456 ) ) ) {
header( 'X-Robots-Tag: noindex, nofollow', true );
}
} );Здесь 123 и 456 — ID страниц с формами. Такой способ хорош тем, что заголовок виден даже без просмотра HTML. Но он требует аккуратности: не ставьте его на весь сайт, если закрыть нужно только несколько URL.
Вариант 4. Убрать страницу из sitemap и навигации
Даже если страница закрыта от индексации, она может продолжать получать обход из карты сайта и внутренних ссылок. Это не ошибка, но лишняя нагрузка и лишние сигналы для поисковика. Если страница служебная, уберите её из меню, футера, хлебных крошек и XML sitemap.
Для sitemap обычно достаточно исключить страницу в настройках SEO-плагина или не использовать её как публичную. Если форма стоит на странице благодарности, лучше вообще сделать её недоступной из меню и не ссылаться на неё из контента.
Как проверить, что решение сработало
Проверка должна быть не на глаз, а по факту ответа сервера и HTML. Вот минимальный чек-лист:
- в исходном коде есть
noindexили в заголовках естьX-Robots-Tag; - страница больше не попадает в XML sitemap;
- внутренние ссылки на неё убраны или переведены в
nofollow, если это оправдано; - в Search Console URL проходит проверку как
noindexили исключён из индекса после переобхода; - форма WPForms по-прежнему отправляется и показывает нужное сообщение после сабмита.
Проверить заголовки можно так:
curl -I https://example.com/form-page/В ответе ищите строку вида X-Robots-Tag: noindex, nofollow. Если используете метатег в HTML, откройте исходный код страницы и найдите meta name="robots".
Частые ошибки и как их исправить
Закрыли страницу в robots.txt вместо noindex
Это самая частая ошибка. Робот может перестать обходить URL, но уже известный адрес останется в индексе дольше, чем ожидается. Для удаления страницы из поиска нужен именно noindex или заголовок X-Robots-Tag.
Поставили noindex, но оставили страницу в sitemap
Так поисковик продолжает регулярно находить URL. Это не критично, но мешает быстрее убрать страницу из выдачи. Если страница не нужна в поиске, исключите её и из карты сайта.
Закрыли не ту страницу из-за шаблона
Если метатег добавлен через условие is_page_template(), проверьте путь к шаблону. Ошибка в имени файла или папке — и правило не сработает. Для теста временно выведите комментарий в HTML или проверьте заголовки через curl.
Сломали форму после правки шаблона
Иногда разработчик редактирует не только wp_head, но и сам шаблон страницы, случайно убирая wp_footer() или скрипты WPForms. Тогда форма перестаёт отправляться по AJAX или теряет стили. Если после правки форма ведёт себя странно, сначала сравните шаблон с исходным и проверьте, что в нём остались wp_head() и wp_footer().
Практические советы по безопасности и производительности
Если форма служебная, не ограничивайтесь только индексацией. Проверьте, не доступна ли страница без авторизации, если она должна быть внутренней. Для закрытых форм лучше использовать отдельный шаблон, понятные права доступа и минимальное число внешних скриптов.
Ещё один полезный момент — не перегружать страницу с формой лишними блоками. Чем меньше на ней контента, виджетов и сторонних скриптов, тем проще отлаживать отправку и тем меньше риск конфликтов с кэшем или оптимизаторами JS. Если на сайте уже используется плагин для чистки дублей и технической оптимизации, например Clearfy Pro, проверьте, не переписывает ли он мета robots или каноникал для этого шаблона.
Для страниц с формами также стоит следить за кэшированием. Если форма показывает персональные данные или зависит от авторизации, кэш страницы может дать неверный результат. В таких случаях лучше исключить URL из кэша на уровне плагина или сервера.
Короткий рабочий сценарий
- Определите, какая именно страница с WPForms не должна индексироваться.
- Выберите один способ:
noindexв SEO-плагине, метатег в шаблоне илиX-Robots-Tag. - Уберите URL из sitemap и внутренних ссылок.
- Проверьте HTML и заголовки ответа.
- Переобойдите URL в Search Console и дождитесь обновления индекса.
Если нужен предсказуемый результат, не смешивайте сразу все методы. Для обычной страницы WordPress с формой чаще всего достаточно noindex плюс исключение из sitemap. Остальное — по ситуации, когда есть нестандартный шаблон или серверная логика.