На WordPress часто индексируются страницы, которые не приносят трафик и только создают шум в поиске: результаты внутреннего поиска, страницы вложений, служебные архивы, технические URL плагинов и часть пагинации. Проблема обычно не в одной настройке, а в наборе мелких ошибок: где-то стоит только robots.txt, где-то забыли noindex, а где-то тема продолжает отдавать каноникал на не ту страницу.
Если задача именно техническая — убрать из индекса служебные страницы без поломки сайта и без лишних дублей — лучше идти от диагностики к точечным правкам. Ниже разберём, что отключать, чем это делать и как проверить, что поисковики увидят именно то, что нужно.
Какие страницы WordPress чаще всего попадают в индекс
Служебные страницы отличаются от контентных тем, что они не должны конкурировать с основными материалами. На практике чаще всего нужно проверить:
- страницы внутреннего поиска вида
?s=; - архивы вложений медиафайлов;
- страницы пагинации в местах, где они не несут ценности;
- служебные таксономии и пустые архивы;
- страницы авторов и дат, если они не нужны для SEO;
- технические страницы плагинов, которые отдают публичный URL.
Не все из них нужно закрывать одинаково. Например, для части страниц достаточно noindex, а для совсем бесполезных URL лучше убрать саму генерацию или сделать редирект на релевантный раздел.
Диагностика: что именно уже индексируется
Перед изменениями стоит понять, откуда берутся дубли. Самый быстрый путь — посмотреть отчёт в Google Search Console и вручную проверить типовые URL сайта. Если в индексе есть страницы поиска, вложений или пустые архивы, значит проблема не решена на уровне шаблона или SEO-настроек.
Что проверить в первую очередь
- Есть ли у страницы тег
<meta name="robots" content="noindex,follow">. - Не блокируется ли URL только через
robots.txtбезnoindex. - Не ведёт ли канонический URL на саму служебную страницу.
- Не создаёт ли плагин SEO отдельные правила для архивов и вложений.
- Не отдаёт ли тема контент на страницах вложений вместо редиректа.
Если страница уже в индексе, одного запрета в robots.txt обычно недостаточно: робот может продолжать хранить URL в базе как известный, но недоступный. Для удаления из индекса нужен либо noindex, либо редирект, либо удаление страницы с корректным статусом ответа.
Что отключать через настройки, а что — кодом
Если у сайта есть SEO-плагин, часть задач проще закрыть в его настройках. Но не стоит полагаться только на интерфейс: у темы или другого плагина может быть свой вывод мета-тегов и каноникалов. Поэтому полезно понимать, где заканчивается настройка и начинается код.
| Подход | Когда подходит | Компромисс |
|---|---|---|
| Настройки SEO-плагина | Для архивов, вложений, пагинации, авторов | Зависит от конкретного плагина и его шаблонов |
| Код в теме или мини-плагине | Когда нужно точечно закрыть внутренний поиск, вложения, служебные URL | Нужно тестировать после обновлений темы |
robots.txt | Для снижения обхода роботом | Не гарантирует удаление из индекса |
Пошаговое решение для служебных страниц
Ниже — рабочий набор действий, который можно адаптировать под конкретный сайт. Лучше вносить изменения в дочернюю тему или в небольшой mu-plugin, а не править ядро темы напрямую.
1. Закрыть страницы внутреннего поиска
Страницы поиска почти всегда создают мусор в индексе. Для них обычно нужен noindex, а не блокировка в robots.txt, чтобы поисковик мог увидеть директиву и убрать URL из выдачи.
<?php
add_action('wp_head', function () {
if (is_search()) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
}, 1);Если SEO-плагин уже выводит robots meta, не дублируйте тег вручную. В таком случае настройте правило в самом плагине или отключите его вывод на уровне шаблона.
2. Перенаправить страницы вложений на сам файл или родительскую запись
Страницы attachment-архивов редко нужны пользователю. Если на сайте нет отдельной задачи для таких страниц, безопаснее отправлять их на родительскую запись, а если родителя нет — на сам файл медиа.
<?php
add_action('template_redirect', function () {
if (!is_attachment()) {
return;
}
$post = get_post();
if (!$post) {
return;
}
if ($post->post_parent) {
wp_safe_redirect(get_permalink($post->post_parent), 301);
exit;
}
$file = wp_get_attachment_url($post->ID);
if ($file) {
wp_safe_redirect($file, 301);
exit;
}
});Такой подход уменьшает количество бесполезных URL и убирает риск, что поисковик будет индексировать отдельную страницу вложения вместо основного материала.
3. Убрать индексацию пустых или служебных архивов
Если на сайте есть архивы, которые не должны участвовать в поиске, можно добавить noindex только для них. Например, для пустых таксономий или специальных архивов темы.
<?php
add_action('wp_head', function () {
if (is_tax() || is_category() || is_tag()) {
if (!have_posts()) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
}
}, 1);Этот пример стоит использовать аккуратно: если шаблон уже выполняет основной запрос, have_posts() в wp_head может быть не лучшим индикатором для всех тем. Для сложных случаев лучше проверять количество записей через отдельный запрос или решать задачу настройками SEO-плагина.
4. Добавить базовые правила в robots.txt
robots.txt полезен для снижения лишнего обхода, но не заменяет noindex. Его имеет смысл использовать для URL, которые не должны тратить краулинговый бюджет, например для параметров поиска или служебных каталогов плагинов, если они доступны публично.
User-agent: *
Disallow: /?s=
Disallow: /search/
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.phpЕсли у сайта уже есть нестандартные правила, не копируйте этот блок вслепую. Сначала проверьте текущий robots.txt, чтобы не закрыть важные разделы и не сломать доступ к ресурсам, которые нужны для рендеринга страниц.
Как проверить, что решение сработало
После внедрения изменений не ограничивайтесь просмотром исходного кода одной страницы. Нужна проверка на нескольких уровнях:
- откройте служебный URL в браузере и посмотрите исходный код на наличие
noindex; - проверьте HTTP-статус страницы через
curl -I https://example.com/...; - убедитесь, что редирект для вложений отдаёт
301, а не302; - в Search Console отправьте URL на повторную проверку после обновления;
- проверьте, не остался ли в индексе старый каноникал на служебную страницу.
Для быстрой локальной проверки удобно использовать такую команду:
curl -I https://example.com/?s=testВ ответе важно увидеть либо редирект, либо корректный статус и отсутствие ошибок в заголовках. Если страница всё ещё отдаёт 200 OK и не содержит noindex, поисковик может продолжать её индексировать.
Частые ошибки и как их исправить
Закрыли страницу только в robots.txt
Это частая ошибка: робот перестаёт обходить URL, но сам адрес может оставаться в индексе. Если цель — убрать страницу из поиска, добавьте noindex или сделайте редирект.
Поставили noindex, но оставили неправильный canonical
Если canonical указывает на саму служебную страницу или на нерелевантный URL, поисковик получает противоречивые сигналы. Проверьте, что canonical ведёт на основную версию контента или отсутствует там, где он не нужен.
Сделали редирект на главную для всех вложений
Это выглядит просто, но часто ухудшает поведение сайта: пользователь и робот теряют контекст. Лучше вести вложение на родительскую запись, а не на главную страницу без связи с файлом.
Дублируют правила тема и SEO-плагин
Если и тема, и плагин выводят robots meta, можно получить конфликт: один блок ставит index, другой — noindex. В таких случаях оставьте один источник правды и уберите второй.
Практические советы по безопасности и производительности
Чем меньше мусорных URL отдаёт сайт, тем меньше лишних запросов получают сервер и поисковые роботы. Это не магическая оптимизация, но на больших сайтах она заметно упрощает поддержку. Не закрывайте всё подряд: если архив реально нужен пользователям и приносит трафик, его лучше доработать, а не прятать.
Если на сайте много служебных страниц, удобно вынести правила в отдельный мини-плагин или использовать инструмент для чистки дублей и SEO-настроек, например Clearfy Pro. Но даже в этом случае стоит понимать, какие именно страницы он закрывает и не конфликтуют ли его правила с темой.
Если после правок часть URL всё ещё остаётся в индексе, не спешите менять всё сразу. Сначала проверьте исходный код, заголовки ответа и настройки SEO-плагина. В технической оптимизации WordPress почти всегда выигрывает точечная правка, а не массовое отключение всего подряд.