Если в Search Console всплывают дубли, а в индексе оказываются страницы архивов, тегов, пагинации и URL с параметрами, проблема обычно не в «плохом SEO», а в том, что WordPress по умолчанию генерирует слишком много доступных для обхода адресов. Самый рабочий подход — не пытаться закрыть всё подряд, а сначала понять, какие типы страниц реально нужны для поиска, а какие только размывают индексацию.
Что именно считать дублем в WordPress
Дубль — это не только одинаковый текст на двух URL. На практике чаще мешают страницы, которые конкурируют между собой за один и тот же запрос: архивы рубрик, теги без наполнения, страницы автора на небольшом сайте, пагинация архивов, результаты внутреннего поиска, сортировки и параметры фильтрации. Для поисковика это отдельные адреса, но для сайта — почти всегда лишний шум.
Типичные источники дублей
- архивы тегов с тем же набором записей, что и рубрики;
- страницы пагинации вида
/page/2/без самостоятельной ценности; - страницы автора на одном-двух авторах;
- URL с параметрами
?replytocom=,?utm_,?sort=и похожими; - страницы поиска по сайту;
- дубли из-за http/https, www/без www, слэша на конце и неправильных редиректов.
Диагностика: где искать проблему сначала
До правок проверьте, какие именно URL уже попали в индекс и как они выглядят в обходе. Начните с Google Search Console: отчет по страницам, исключенные URL, дубли без выбранного пользователем канонического URL, просканированные, но не проиндексированные. Если сайт старый, дополнительно посмотрите серверные логи или хотя бы список URL в аналитике, чтобы понять, какие адреса реально посещают роботы.
Полезно вручную проверить несколько страниц:
- есть ли на странице корректный
<link rel="canonical">; - не стоит ли на ней
noindexслучайно; - не открывается ли один и тот же контент по нескольким адресам;
- не отдает ли сервер 200 OK там, где должен быть редирект.
Если используете SEO-плагин, не полагайтесь на его настройки вслепую. Сначала откройте исходный код страницы и посмотрите, что реально выводится в <head>.
Пошаговое решение: canonical, noindex и редиректы
Здесь важно не путать задачи. Canonical помогает подсказать поисковику основную версию страницы. Noindex говорит не включать страницу в индекс. Редирект нужен, когда адрес вообще не должен существовать как отдельная точка входа.
1. Оставьте в индексе только полезные архивы
Если рубрики у вас реально используются как навигация и содержат уникальные описания, их можно оставить открытыми. Теги на большинстве контентных сайтов часто превращаются в дубли рубрик и их лучше закрывать от индексации или полностью отключать вывод архива, если он не нужен.
Для точечной настройки без плагина можно добавить фильтр в functions.php дочерней темы или в мини-плагин:
<?php
add_action('wp_head', function () {
if (is_search() || is_author() || is_tag()) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
}, 1);
Это базовый пример, но использовать его стоит только после проверки логики сайта. Если теги нужны для поиска и у них есть уникальный контент, закрывать их целиком не стоит.
2. Настройте canonical для страниц с параметрами
Если на сайте есть фильтры, сортировки или UTM-метки, canonical должен указывать на чистую основную версию URL. В большинстве случаев WordPress и SEO-плагины делают это сами, но на кастомных шаблонах или в нестандартных архивах бывают ошибки.
Пример для страницы, где нужно принудительно указать канонический адрес:
<?php
add_action('wp_head', function () {
if (is_page('news')) {
echo '<link rel="canonical" href="' . esc_url(home_url('/news/')) . '" />' . "\n";
}
}, 5);
Если canonical уже выводится плагином, не дублируйте его вручную. Два canonical в одной странице — частая ошибка, из-за которой поисковик может проигнорировать оба.
3. Уберите лишние URL через редирект
Когда у страницы есть явный дубль, лучше не закрывать его noindex, а отправлять на основной адрес 301-редиректом. Это касается http на https, www на без www, старых URL после смены структуры и страниц, которые больше не должны существовать.
Для простого редиректа в WordPress можно использовать template_redirect:
<?php
add_action('template_redirect', function () {
if (isset($_GET['replytocom'])) {
wp_safe_redirect(remove_query_arg('replytocom'), 301);
exit;
}
});
Этот пример полезен для комментариев, где replytocom часто плодит дубли. Но если на сайте есть кэш и агрессивная оптимизация, проверьте, не ломает ли редирект работу формы комментариев.
Что делать с тегами, авторами и пагинацией
Здесь нет универсального ответа. На новостном сайте страницы автора могут быть полезны, если у каждого автора есть биография, фото, подборка материалов и стабильный поток публикаций. На небольшом корпоративном блоге архив автора часто дублирует главную ленту и рубрики. То же самое с тегами: если они не несут отдельной навигационной ценности, их лучше либо закрыть, либо вообще не использовать.
| Подход | Когда подходит | Минус |
|---|---|---|
| Оставить в индексе | Есть уникальный контент и трафик | Нужно поддерживать качество архива |
noindex,follow | Страница нужна пользователю, но не для поиска | Не решает проблему обхода полностью |
| 301-редирект | Страница не должна существовать как отдельный URL | Нужно аккуратно проверить ссылки и навигацию |
Проверка результата после внедрения
После правок не ограничивайтесь просмотром исходника. Нужно убедиться, что поисковик видит именно то, что вы задумали.
- Откройте несколько страниц разных типов и проверьте
canonicalиrobotsв исходном коде. - Проверьте, что дубль-URL отдает 301, а не 200.
- В Search Console отправьте на повторную проверку страницы, где меняли индексацию.
- Сравните количество исключенных и проиндексированных URL через 1-2 обхода робота, а не на следующий день.
Если используете командную строку, быстро проверить заголовки можно так:
curl -I https://example.com/tag/sample/
curl -I https://example.com/news/?replytocom=123
Ищите 301 для редиректов, 200 для страниц, которые должны открываться, и отсутствие неожиданных цепочек редиректов.
Частые ошибки и как их исправить
Ставят noindex на все подряд
Так часто ломают рубрики, которые реально собирают трафик. Исправление простое: сначала определите страницы с поисковым спросом, потом закрывайте только технический мусор.
Оставляют дубль и каноникал одновременно
Если страница не нужна, canonical не спасает. Нужен редирект или удаление URL из навигации. Canonical — это подсказка, а не запрет.
Закрывают страницы в robots.txt и ждут исчезновения из индекса
Если URL уже в индексе, запрет в robots.txt не удалит его быстро и может помешать поисковику увидеть noindex. Для удаления из индекса сначала нужен доступ робота к странице.
Создают цепочки редиректов
Например, http → www → https → конечный URL. Это лишняя нагрузка и риск ошибок. Должен быть один понятный переход на финальный адрес.
Практические советы по безопасности и производительности
Чем меньше лишних архивов и параметров обходит робот, тем меньше нагрузка на сервер и кэш. Это особенно заметно на сайтах с большим количеством записей, тегов и фильтров. Если вы отключаете архивы, делайте это аккуратно: сначала уберите ссылки из меню и виджетов, потом настройте редиректы, и только после этого меняйте индексацию.
Если нужен более системный подход к чистке дублей, технических страниц и SEO-микронастроек, можно посмотреть Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже с плагином все равно стоит проверить, какие именно типы страниц он закрывает, чтобы не потерять полезные архивы.
Перед изменениями сделайте резервную копию базы и проверьте правки на staging-копии. Для SEO-правок это не формальность: одна лишняя массовая настройка может убрать из индекса важные страницы быстрее, чем вы успеете это заметить.