Если в индексе уже есть мусорные URL, проблема обычно не в «плохом SEO», а в том, что WordPress по умолчанию публикует слишком много служебных страниц: архивы тегов, авторов, вложений, внутренний поиск, пагинацию, иногда даже страницы с параметрами. Поисковик не обязан сам догадаться, что из этого вам не нужно.
Ниже — рабочая схема: сначала быстро диагностируем, какие URL реально мешают, потом закрываем их корректно, а не «на глаз», и в конце проверяем, что ничего важного не выпало из индекса.
Какие страницы WordPress чаще всего создают дубли
Проблема почти всегда выглядит одинаково: в Search Console растет число страниц без трафика, а в выдаче появляются URL, которые не должны конкурировать с основными материалами. Чаще всего это:
- страницы внутреннего поиска вида
?s=; - архивы тегов, если теги используются хаотично;
- архивы авторов на сайтах с одним автором;
- страницы вложений медиафайлов;
- служебные страницы пагинации, если они не несут ценности;
- страницы с параметрами сортировки, фильтров и UTM, если они индексируются как отдельные URL.
Не все из этого нужно закрывать. Например, архивы категорий часто полезны, а вот архивы тегов на небольшом сайте нередко только размазывают релевантность. Поэтому сначала нужна диагностика, а не массовый запрет всего подряд.
Диагностика проблемы: что именно уже попало в индекс
Начните с двух источников: Google Search Console и обычного поиска по сайту. В Search Console откройте отчет по страницам и посмотрите, какие типы URL растут без кликов. Затем проверьте, как поисковик видит служебные страницы через запросы вида site:example.com inurl:?s=, site:example.com inurl:/tag/, site:example.com inurl:/author/.
Если сайт небольшой, этого уже достаточно. На более крупном проекте полезно выгрузить список URL из краулера вроде Screaming Frog и сравнить его с реальными страницами, которые должны индексироваться. Ищите не только дубли контента, но и страницы с тонким содержанием: пустые архивы, страницы с одной записью, вложения без текста.
Что проверить вручную
- есть ли у служебной страницы уникальная ценность для пользователя;
- не ведут ли на нее внутренние ссылки из меню, хлебных крошек или блоков похожих материалов;
- не закрыта ли она уже через
noindexв SEO-плагине; - не отдает ли она канонический URL на основную страницу;
- не создает ли она цепочку редиректов или 404 после удаления.
Какой способ закрытия выбрать: плагин, код или оба варианта
Для большинства сайтов лучше комбинировать настройки SEO-плагина и точечный код. Плагин удобен для типовых архивов, код нужен там, где требуется точная логика или нет желания тащить лишние настройки в админку.
| Подход | Когда подходит | Плюс | Минус |
|---|---|---|---|
| SEO-плагин | Теги, авторы, архивы, хлебные крошки, мета robots | Быстро и без правки темы | Меньше гибкости, зависит от интерфейса плагина |
| Код в теме или mu-plugin | Точечные правила для поиска, вложений, параметров, редиректов | Полный контроль | Нужно тестировать после обновлений |
| Комбинация | Когда часть URL типовая, а часть — нестандартная | Баланс удобства и точности | Нужно следить, чтобы правила не конфликтовали |
Если у вас уже стоит плагин для SEO и чистки дублей, например Clearfy Pro, часть задач можно закрыть в интерфейсе без кода. Но даже в этом случае полезно понимать, что именно происходит на уровне robots, noindex и каноникализации.
Пошаговое решение: закрываем служебные URL без лишнего риска
1. Закройте внутренний поиск от индексации
Страницы поиска почти никогда не должны попадать в индекс. Они создают шум, быстро устаревают и часто имеют низкую ценность. Если SEO-плагин умеет ставить noindex на результаты поиска, используйте его. Если нужно сделать это вручную, можно добавить мета-тег через wp_head.
<?php
add_action('wp_head', function () {
if (is_search()) {
echo '<meta name="robots" content="noindex,follow">' . "\n";
}
});Этот вариант не ломает поиск на сайте, но подсказывает роботам не индексировать страницу результатов. Если у вас уже есть SEO-плагин, не дублируйте правило в двух местах одновременно.
2. Уберите из индекса вложения медиафайлов
WordPress может создавать отдельные страницы вложений для изображений и файлов. На большинстве сайтов это лишние URL без самостоятельной ценности. Правильнее либо редиректить вложение на сам файл или родительскую запись, либо закрывать такие страницы от индексации.
<?php
add_action('template_redirect', function () {
if (is_attachment()) {
$parent = wp_get_post_parent_id(get_the_ID());
if ($parent) {
wp_redirect(get_permalink($parent), 301);
exit;
}
wp_redirect(home_url('/'), 301);
exit;
}
});Это рабочая схема для сайтов, где страницы вложений не нужны. Если же у вас медиа-архивы используются осознанно, редирект делать не стоит — тогда лучше ограничиться noindex.
3. Закройте архивы тегов и авторов, если они не дают трафик
Архивы тегов часто превращаются в дубли категорий. Архивы авторов на сайтах с одним редактором вообще не несут смысла. В SEO-плагине их обычно можно отключить точечно. Если нужен код, ориентируйтесь на мета-robots:
<?php
add_action('wp_head', function () {
if (is_tag() || is_author()) {
echo '<meta name="robots" content="noindex,follow">' . "\n";
}
});Важно: не закрывайте авторские архивы, если они реально используются как страницы профилей с биографией, списком публикаций и ссылками на соцсети. В этом случае лучше оставить их открытыми и улучшить содержимое.
4. Не индексируйте страницы поиска по параметрам и служебные фильтры
Если на сайте есть фильтры, сортировки или параметры, которые создают отдельные URL, проверьте, не индексируются ли они. Для WordPress это особенно заметно на сайтах с каталогами, подборками и большим количеством внутренних фильтров. Здесь лучше использовать канонический URL на основную версию страницы и не плодить отдельные индексируемые копии.
Если параметр не должен влиять на содержимое страницы, его можно игнорировать на уровне логики шаблона или через настройки плагина. Важный момент: не пытайтесь закрыть все параметры через robots.txt вслепую. Это часто мешает поисковику увидеть каноническую страницу и понять структуру сайта.
Чек-лист перед публикацией изменений
- проверить, что важные категории и записи не получили
noindexслучайно; - убедиться, что внутренний поиск закрыт, а не сломан;
- проверить, что вложения либо редиректятся, либо закрыты осознанно;
- сравнить канонические URL до и после правок;
- посмотреть, нет ли конфликтов между SEO-плагином и кодом темы;
- протестировать несколько URL в режиме инкогнито и через исходный код страницы;
- после обновления sitemap убедиться, что служебные страницы туда не попали.
Как проверить, что решение сработало
Проверка должна быть не «на глаз», а по конкретным признакам. Откройте страницу и посмотрите исходный код: для закрытых URL должен быть noindex,follow или редирект на нужный адрес. Затем проверьте ответ сервера через curl или любой HTTP-клиент.
curl -I https://example.com/?s=testЕсли вы настроили редирект для вложений, ответ должен быть 301 и вести на родительскую запись или главную страницу. Если поставили noindex, убедитесь, что страница все еще открывается для пользователя, но в коде есть корректная директива robots.
Дальше проверьте Search Console: новые правила не дадут мгновенного эффекта, но со временем количество служебных URL в отчете должно снижаться. Для страниц, которые были уже проиндексированы, полезно отправить их на повторную проверку после изменения.
Частые ошибки и как их исправить
Закрыли слишком много страниц
Частая ошибка — поставить noindex на все архивы подряд, а потом обнаружить, что из поиска исчезли полезные категории. Исправление простое: верните индексируемость тем архивам, которые реально собирают трафик и помогают навигации.
Использовали только robots.txt
Disallow в robots.txt не равен noindex. Если страница уже в индексе, запрет сканирования не всегда уберет ее из выдачи. Для удаления из поиска нужен либо noindex, либо редирект, либо удаление страницы с корректным ответом сервера.
Сделали редирект на главную для всего подряд
Редирект всех служебных URL на главную выглядит просто, но часто ухудшает качество сигналов. Для вложений это еще можно обсуждать, а вот для поисковых страниц и пустых архивов лучше применять точечную логику, а не массовую отправку на homepage.
Получили конфликт плагина и кода
Если SEO-плагин уже ставит noindex, а тема дополнительно выводит другой robots-тег, поисковик может увидеть противоречивую разметку. Оставьте один источник истины: либо настройки плагина, либо собственный код.
Практика по безопасности и производительности
Чем меньше лишних страниц генерирует WordPress, тем меньше нагрузка на обход и тем проще поддерживать чистую структуру сайта. Но есть и техническая сторона: не стоит вешать тяжелую логику на каждый запрос в wp_head или template_redirect, если это можно решить настройкой плагина или одним условием.
Если вы вносите код вручную, лучше вынести его в mu-plugin или в отдельный функциональный плагин, а не править functions.php активной темы. Так изменения не потеряются при обновлении темы и их проще отключить при диагностике.
Для сайтов, где много дублей и служебных URL, полезно также проверить:
- генерацию sitemap — там не должно быть закрытых страниц;
- хлебные крошки — они не должны вести в пустые архивы без смысла;
- внутреннюю перелинковку — не стоит усиливать мусорные URL ссылками из шаблона;
- пагинацию — она должна быть доступна пользователю, но не обязательно индексируемой, если не несет ценности.
Если нужен более быстрый путь без ручной сборки правил, можно посмотреть в сторону Clearfy Pro: у него есть инструменты для удаления дублей и чистки сайта, а для типовых задач это часто экономит время на настройке. Но даже с плагином все равно стоит проверить, какие именно URL он закрывает и не конфликтует ли это с вашей темой.