Если в Search Console растёт число страниц, а в индексе всплывают теги, архивы, страницы поиска и пагинация, проблема обычно не в «плохом SEO», а в том, что WordPress по умолчанию публикует слишком много технических URL. Их не всегда нужно удалять физически — чаще достаточно правильно закрыть от индексации, убрать лишние ссылки и не ломать каноникал.
Ниже — рабочая схема для типового сайта на WordPress: сначала находим источник дублей, затем выбираем способ закрытия, после этого проверяем, что поисковик видит именно то, что нужно.
Какие дубли в WordPress встречаются чаще всего
На практике чаще всего индексируются не сами записи, а производные страницы:
- архивы рубрик и меток, если они дублируют ленту записей;
- страницы автора на сайте с одним автором;
- внутренний поиск вида
?s=...; - страницы пагинации архивов, если они не несут отдельной ценности;
- служебные URL с параметрами сортировки, фильтров или UTM;
- страницы вложений медиафайлов, если они открыты как отдельные страницы.
Важно не путать дубли контента и просто похожие страницы. Например, архив рубрики может быть полезен, если это полноценная посадочная страница с уникальным текстом, а не копия списка записей.
Диагностика: где именно появляется дубль
Начинать лучше не с плагина, а с проверки того, что уже индексируется. Для этого подойдут отчёты Search Console, а также обычный поиск по сайту и выгрузка URL из краулера вроде Screaming Frog или Sitebulb.
Что смотреть в первую очередь
- раздел «Страницы» в Search Console: какие URL попадают в индекс без явной пользы;
- тип URL: рубрика, метка, автор, поиск, архив, вложение;
- наличие одинаковых title и description на разных URL;
- канонический URL в исходном коде страницы;
- есть ли внутренние ссылки на технические страницы.
Если дубль уже в индексе, одного noindex мало: поисковику нужно дать понятный сигнал, что страница больше не основная. Для этого обычно сочетают noindex и корректный canonical, а для совсем ненужных URL — редирект или отключение генерации страницы.
Как закрыть дубли: плагин, код или настройка темы
Универсального способа нет. Если сайт типовой, проще и безопаснее использовать SEO-плагин или инструмент для чистки дублей. Если нужна точечная логика под конкретный проект, лучше править кодом в теме или небольшом mu-plugin.
| Подход | Когда подходит | Минус |
|---|---|---|
| SEO-плагин | Нужно быстро закрыть архивы, метки, поиск, авторов | Меньше гибкости в нестандартных сценариях |
| Код в теме / mu-plugin | Нужна точная логика для конкретных таксономий и шаблонов | Требует аккуратного тестирования после обновлений |
| Редирект / отключение шаблона | Страница не нужна вообще | Можно потерять полезный трафик, если закрыть лишнее |
Если нужен инструмент именно для чистки дублей и технического SEO, уместно посмотреть в сторону Clearfy Pro: он закрывает типовые служебные страницы и помогает убрать лишнее без ручной правки каждой мелочи. Но даже с плагином полезно понимать, что именно вы отключаете.
Пошаговое решение через код
Ниже пример для ситуации, когда нужно закрыть от индексации страницы автора на сайте с одним автором, архивы меток и внутренний поиск, но оставить рубрики открытыми.
<?php
add_action('wp', function () {
if (is_author() || is_tag() || is_search()) {
add_action('wp_head', function () {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}, 1);
}
});
add_filter('wp_robots', function ($robots) {
if (is_author() || is_tag() || is_search()) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});Этот вариант использует стандартный фильтр wp_robots, который есть в современных версиях WordPress. Он предпочтительнее, чем вручную печатать мета-тег в шаблоне, потому что не завязан на конкретную тему.
Если нужно не только закрыть от индексации, но и убрать саму страницу автора на сайте с одним автором, можно сделать редирект на главную или на страницу «О сайте»:
<?php
add_action('template_redirect', function () {
if (is_author() && (int) get_query_var('author') > 0) {
wp_redirect(home_url('/'), 301);
exit;
}
});Такой редирект имеет смысл только если авторский архив не несёт ценности. Если на сайте несколько редакторов и у каждого есть собственные материалы, закрывать архив автора обычно не стоит.
Что делать с пагинацией архивов
Пагинация — отдельный случай. Страницы /page/2/, /page/3/ и дальше часто не нужны в индексе, если они не получают самостоятельный трафик и не содержат уникального контента. Но полностью отключать их без проверки не стоит: иногда именно они помогают поисковику дойти до старых материалов.
Практичный подход такой:
- если архив небольшой — оставьте пагинацию открытой, но следите за каноникал;
- если архивы разрастаются и дают мусор в индексе — ставьте
noindex,followна вторые и последующие страницы; - если пагинация ведёт на пустые или почти пустые страницы — проверьте, не проблема ли это в настройке количества записей на странице.
Для точечной логики можно использовать условие is_paged():
<?php
add_filter('wp_robots', function ($robots) {
if (is_archive() && is_paged()) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});Но не применяйте это вслепую ко всем архивам. Если у вас сильная рубрика с собственным спросом, её вторая страница может быть полезна для обхода и внутренней перелинковки.
Проверка результата после внедрения
После изменений не ограничивайтесь просмотром исходника. Нужно проверить три слоя: HTML, индекс и обход.
- Откройте проблемный URL в браузере и проверьте, что в
<head>появился нужный robots-сигнал. - Посмотрите канонический URL: он должен указывать на основную страницу, а не на дубль.
- В Search Console отправьте URL на повторную проверку, если страница уже была в индексе.
- Через несколько дней проверьте, исчез ли URL из отчёта о страницах с проблемами индексации.
Если используете краулер, сравните список URL до и после. Хороший признак — уменьшение количества технических страниц в обходе и отсутствие внутренних ссылок на закрытые URL.
Мини-чек-лист проверки
- robots-метка есть на нужных типах страниц;
- каноникал указывает на основную версию;
- внутренние ссылки не ведут на закрытые архивы без необходимости;
- Search Console больше не показывает рост мусорных URL;
- страницы, которые должны ранжироваться, не получили случайный
noindex.
Частые ошибки и как их исправить
Ставят noindex на всё подряд
Так часто ломают рубрики, архивы записей и даже отдельные статьи, если фильтр написан слишком широко. Проверьте условия: is_archive() включает много типов архивов, а is_paged() сработает не только на метках.
Удаляют страницу, но не убирают внутренние ссылки
Если в меню, хлебных крошках или блоках темы остались ссылки на закрытую страницу, поисковик продолжит её обходить. После изменений проверьте шаблоны, виджеты и блоки в редакторе.
Закрывают дубли, но не меняют каноникал
Если у страницы остаётся самоссылочный canonical на дубль, сигнал для поисковика получается слабым. Для технических страниц лучше либо редирект, либо noindex с корректной основной версией.
Смешивают редирект и noindex без логики
Если страница не нужна, обычно достаточно 301-редиректа. Если страница нужна пользователям, но не должна индексироваться, используйте noindex,follow. Одновременно применять всё подряд не имеет смысла.
Безопасность и производительность
Любые изменения в логике индексации лучше вносить не в файл темы, а в дочернюю тему или отдельный mu-plugin. Так обновление темы не затрёт правки. Перед внедрением сделайте резервную копию и проверьте изменения на staging-копии, если сайт рабочий и уже получает трафик.
Если у вас тяжёлая тема с большим количеством архивов, часть дублей можно убрать не только robots-метками, но и отключением лишних типов архивов в настройках темы или плагина. Это снижает количество страниц, которые нужно обходить, и упрощает структуру сайта для поисковика.
Для проектов, где много технического мусора, полезно сначала навести порядок в генерации URL, а уже потом заниматься мета-тегами. Иначе вы просто маскируете проблему, а не решаете её.