На 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 и переписать шаблон, потом будет сложно понять, что именно сработало или сломалось.
Хорошая последовательность такая:
- включить
noindex,followдля нужных типов страниц; - исключить их из sitemap;
- отфильтровать отправку в IndexNow;
- проверить исходный код и HTTP-ответ;
- посмотреть, как поисковик переобходит страницы в течение следующих обходов.
Если задача касается большого сайта, сначала протестируйте на одном типе архива или одном наборе фильтров. Это быстрее, чем потом разбирать массовую переиндексацию мусорных URL.