Как запретить индексацию отдельных страниц в WordPress без плагинов

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

Ниже — рабочий сценарий без выдуманных хуков и без магии. Разберём, как диагностировать проблему, чем отличаются способы закрытия от индексации и как проверить, что поисковики получили именно тот сигнал, который вы планировали.

Когда проблема действительно в индексации, а не в дублях

Перед правкой кода полезно понять, что именно не так. Иногда страница уже исключена из индекса, но продолжает висеть в отчёте как «Просканировано, но не проиндексировано». Иногда наоборот: URL открыт, но поисковик выбирает канонический адрес и индексирует не ту версию.

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

  • Есть ли у страницы уникальный контент или это технический экран без ценности для поиска.
  • Появляется ли URL в XML-карте сайта.
  • Не создаёт ли WordPress несколько версий одного и того же адреса: с параметрами, со слешем и без, с пагинацией, с сортировкой.
  • Нет ли уже noindex в мета-тегах или заголовке X-Robots-Tag.
  • Не закрыт ли URL случайно через robots.txt, если вам нужен только запрет индексации, а не запрет обхода.

Важно различать два уровня: запрет индексации и запрет сканирования. Если вы закрываете URL в robots.txt, поисковик может не увидеть страницу и не прочитать noindex внутри HTML. Для точечного управления чаще безопаснее оставить обход доступным и отдать директиву noindex, follow.

Какой способ выбрать: мета-тег, заголовок или robots.txt

Для WordPress в реальных проектах обычно хватает трёх подходов. У каждого свой компромисс.

СпособКогда подходитПлюсМинус
Мета-тег noindexОтдельные страницы, записи, архивыПонятный сигнал для поисковиковНужно, чтобы страница была доступна для обхода
Заголовок X-Robots-TagPDF, файлы, нестандартные ответы, служебные URLРаботает не только для HTMLЧуть сложнее отлаживать
robots.txtГрубое ограничение обходаБыстро и простоНе всегда решает задачу индексации

Если задача точечная, я бы начинал с noindex и только потом смотрел на robots.txt. Для служебных файлов и выгрузок — заголовок X-Robots-Tag. Для массового закрытия технических разделов — уже комбинация правил.

Пошаговое решение через functions.php или мини-плагин

Надёжнее всего вынести код в мини-плагин или в functions.php дочерней темы. Если тема обновляется часто, мини-плагин безопаснее: правило не потеряется при смене шаблона.

1. Добавляем мета-тег noindex для выбранных страниц

Ниже пример, который закрывает от индексации конкретный список страниц по ID. Это удобно для страницы «Спасибо за заявку», политики конфиденциальности в тестовой среде, внутренних лендингов и других адресов, которые не должны попадать в поиск.

<?php
add_action('wp_head', function () {
    if (is_admin()) {
        return;
    }

    $noindex_ids = array(12, 34, 56);

    if (is_page($noindex_ids)) {
        echo '<meta name="robots" content="noindex, follow">' . "\n";
    }
});

Этот вариант прост, но у него есть ограничение: он работает только для HTML-страниц и только там, где WordPress выводит wp_head(). Если шаблон страницы его не вызывает, мета-тег не появится.

2. Закрываем архивы, поиск и служебные страницы по условию

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

<?php
add_action('wp_head', function () {
    if (is_admin()) {
        return;
    }

    if (is_search() || is_author() || is_attachment()) {
        echo '<meta name="robots" content="noindex, follow">' . "\n";
    }
});

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

3. Для файлов и нестандартных ответов используем X-Robots-Tag

Если нужно закрыть от индексации не HTML, а, например, PDF-файл или служебный endpoint, мета-тег не поможет. В таком случае можно отправить HTTP-заголовок.

<?php
add_action('send_headers', function () {
    if (is_admin()) {
        return;
    }

    if (is_attachment()) {
        header('X-Robots-Tag: noindex, follow', true);
    }
});

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

Как убрать URL из карты сайта WordPress

Даже если страница закрыта через noindex, она может продолжать попадать в XML-карту сайта. Это не ошибка, но для служебных URL лучше убрать их из sitemap, чтобы не отправлять поисковику лишние сигналы.

В стандартном WordPress карта сайта генерируется ядром. Если вам нужно исключить конкретные страницы, проще всего фильтровать список URL на уровне генерации. Ниже пример для записей и страниц, которые должны исчезнуть из sitemap.

<?php
add_filter('wp_sitemaps_posts_query_args', function ($args, $post_type) {
    if ($post_type === 'page') {
        $args['post__not_in'] = array(12, 34, 56);
    }

    return $args;
}, 10, 2);

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

Проверка результата после внедрения

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

  • Откройте страницу в режиме инкогнито и посмотрите исходный код: должен быть <meta name="robots" content="noindex, follow">.
  • Проверьте заголовки ответа через DevTools или curl -I https://example.com/page/, если используете X-Robots-Tag.
  • Убедитесь, что URL исчез из XML-карты сайта или больше не генерируется в ней.
  • В Google Search Console отправьте проверку URL и посмотрите, видит ли робот директиву noindex.
  • Если страница уже была в индексе, дождитесь повторного обхода: мгновенного эффекта не будет.

Пример быстрой проверки заголовков:

curl -I https://example.com/thank-you/

В ответе ищите строку X-Robots-Tag: noindex, follow, если вы использовали именно этот способ.

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

Закрыли страницу в robots.txt и ждёте удаления из индекса

Это частая ошибка. Если робот не может зайти на страницу, он может не увидеть noindex. Для точечного удаления из индекса лучше не блокировать обход, а отдать явную директиву.

Ставят noindex только в визуальном шаблоне

Если тема не вызывает wp_head() или страница рендерится нестандартно, мета-тег не появится. Проверяйте исходный HTML, а не только внешний вид страницы.

Закрывают важные страницы по шаблону

Например, добавляют is_page() без списка ID и случайно закрывают весь раздел. Перед публикацией кода проверьте, какие именно условные теги срабатывают на реальных URL.

Оставляют URL в sitemap

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

Путают noindex и canonical

canonical помогает подсказать основную версию страницы, но не заменяет noindex. Если задача — исключить URL из поиска, одного canonical может быть недостаточно.

Как не сломать производительность и безопасность

Технические правки для индексации обычно лёгкие, но есть несколько практических моментов. Не вставляйте код в случайный плагин с неизвестным происхождением. Лучше использовать собственный мини-плагин или дочернюю тему. Так вы не потеряете правки при обновлении и не будете зависеть от чужой логики.

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

Для больших сайтов полезно вести короткий список правил: что закрыто, почему закрыто и где это реализовано. Через месяц это экономит время лучше любого «универсального» SEO-плагина.

Когда лучше использовать плагин, а когда код

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

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

Автоматизация создания и публикации контента в WordPress: практические решения и примеры
18.09.2026
Автоматическое удаление забытых meta-полей в WordPress для оптимизации базы данных
22.09.2026
WordPress XML-RPC 403 и 404: как отключить, проверить и не сломать доступ к сайту
20.09.2026
Как использовать WP-Cron для автоматизации задач в WordPress: практическое руководство
27.09.2026
Как создать автоматические ответы на часто задаваемые вопросы в WordPress
15.09.2026
×
Прокачай свой сайт WordPress!

WordPress

-20% на премиум темы и плагины

Создай сайт своей мечты ⋙