Как закрыть noindex-архивы и фасетные страницы WordPress от индексации без потери обновлений

На WordPress часто возникает не проблема «как отправить URL в IndexNow», а более приземлённая задача: часть страниц должна обновляться и существовать для пользователя, но не должна индексироваться. Это архивы по датам, страницы авторов, теги, результаты внутреннего поиска, фасетные фильтры и служебные комбинации параметров. Если просто поставить noindex и забыть про логику обновлений, можно получить лишний шум в индексе, а иногда и обратный эффект — поисковик продолжает видеть старые варианты URL, потому что сайт не даёт понятного сигнала, что именно изменилось.

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

Какая именно проблема возникает

Обычно симптомы выглядят так:

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

Что важно понять до правок

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

Диагностика: какие URL действительно нужно исключить

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

Тип URLЧто делатьПочему
Архивы тегов, авторов, датЧасто noindex + оставить доступнымиПолезны пользователю, но редко нужны в поиске
Внутренний поиск и параметры фильтровОбычно noindex и не отправлять в IndexNowСоздают дубли и слабые страницы
Служебные страницыЗакрыть от индексации и не включать в sitemap/IndexNowНе должны конкурировать с контентом

Проверьте текущую конфигурацию:

  • какие архивы уже закрывает SEO-плагин;
  • есть ли у темы собственные шаблоны архивов;
  • не добавляет ли плагин фильтров новые URL-параметры;
  • не отправляет ли ваш код в IndexNow все изменения подряд без фильтрации.

Пошаговое решение: ставим noindex и фильтруем отправку URL

Ниже пример для темы или небольшого плагина. Он добавляет noindex,follow для архивов тегов, авторов, дат и результатов поиска. Для фасетных URL с параметрами логика обычно строится отдельно, но принцип тот же: если страница не должна индексироваться, не надо отправлять её в IndexNow.

<?php
add_action('wp_head', function () {
    if (is_search() || is_tag() || is_author() || is_date()) {
        echo '<meta name="robots" content="noindex,follow" />' . "\n";
    }
});

Если у вас уже стоит SEO-плагин, не дублируйте мета-тег вручную. Сначала проверьте, умеет ли плагин закрывать нужные типы архивов. Ручной вывод нужен только тогда, когда стандартных настроек недостаточно или вы работаете с кастомным типом контента.

Фильтрация URL перед отправкой в IndexNow

Самая частая ошибка — отправлять в IndexNow любой изменённый URL, включая архивы и служебные страницы. Ниже пример функции, которая пропускает только обычные записи и страницы, а архивы и поиск отсекает.

<?php
function mysite_should_send_to_indexnow( $url ) {
    $path = wp_parse_url( $url, PHP_URL_PATH );
    if ( ! $path ) {
        return false;
    }

    if ( is_search() || is_tag() || is_author() || is_date() ) {
        return false;
    }

    $post_id = url_to_postid( $url );
    if ( ! $post_id ) {
        return false;
    }

    $post_type = get_post_type( $post_id );
    return in_array( $post_type, array( 'post', 'page' ), true );
}

Этот пример не отправляет в IndexNow всё подряд. Для реального проекта лучше вызывать такую проверку в том месте, где вы формируете очередь URL: перед отправкой, а не после.

Если у вас фасетные фильтры и параметры в URL

Фильтры по категориям, цветам, меткам или другим признакам часто создают URL вида ?filter=.... Если такие страницы не нужны в индексе, их надо исключать на уровне логики генерации ссылок и на уровне индексации.

Практически это выглядит так:

  • не добавляйте такие URL в sitemap;
  • не отправляйте их в IndexNow;
  • ставьте noindex,follow на страницы фильтров, если они доступны пользователю;
  • если фильтр создаёт бесконечные комбинации, ограничьте количество индексируемых вариантов.

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

<?php
function mysite_is_facet_url() {
    $allowed = array( 'filter', 'brand', 'color', 'size' );

    foreach ( $allowed as $param ) {
        if ( isset( $_GET[ $param ] ) && $_GET[ $param ] !== '' ) {
            return true;
        }
    }

    return false;
}

add_action('wp_head', function () {
    if ( mysite_is_facet_url() ) {
        echo '<meta name="robots" content="noindex,follow" />' . "\n";
    }
});

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

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

  • Откройте архив или страницу фильтра и посмотрите исходный код: должен быть noindex,follow.
  • Проверьте, не дублируется ли мета-robots несколькими плагинами.
  • Убедитесь, что URL не попадает в XML-карту сайта.
  • Посмотрите, не уходит ли этот URL в ваш обработчик IndexNow.
  • Если используете Search Console или аналогичный инструмент, проверьте статус страницы после переобхода.

Для быстрой локальной проверки удобно открыть URL и выполнить:

curl -I https://example.com/category/news/

Здесь важно не только наличие заголовков ответа, но и то, что сам HTML содержит нужный meta robots. Если у вас noindex выводится через JavaScript — это плохая идея для такой задачи.

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

1. Закрыли страницу от индексации, но оставили её в sitemap

Поисковик получает противоречивые сигналы: в карте сайта URL есть, но на странице стоит noindex. Уберите такие адреса из sitemap на уровне SEO-плагина или фильтра генерации карты сайта.

2. Отправляете в IndexNow всё, что изменилось

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

3. Дублируете meta robots из темы и SEO-плагина

Когда два источника выводят разные значения, поисковик видит конфликт. Оставьте один источник истины: либо SEO-плагин, либо собственный код.

4. Ставите noindex на страницу, но не проверяете каноникал

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

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

Такая доработка обычно лёгкая, но есть несколько практических моментов:

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

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

Что делать после внедрения

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

Хорошая последовательность такая:

  1. включить noindex,follow для нужных типов страниц;
  2. исключить их из sitemap;
  3. отфильтровать отправку в IndexNow;
  4. проверить исходный код и HTTP-ответ;
  5. посмотреть, как поисковик переобходит страницы в течение следующих обходов.

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

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Решение проблем с отправкой URL при использовании PHP-FPM WordPress
29.06.2026
Решение проблем с индексацией и варианты отладки
17.06.2026
IndexNow и автоматизация отправки URL в WordPress с помощью Cron и REST API
27.02.2026
IndexNow и безопасность WordPress: как правильно хранить и использовать ключи API
24.02.2026
Автоматизация отправки URL при массовых изменениях наличия товаров WooCommerce
25.05.2026
×
-15%
на премиум-тему
Reboot

Создай сайт мечты
на WordPress!

Купить со скидкой »