В WordPress дубли чаще всего появляются не из-за «плохого SEO-плагина», а из-за штатной логики: архивы категорий, теги, авторы, пагинация, страницы вложений, параметры сортировки и поиска. На небольшом сайте это может быть незаметно, но в индексе быстро накапливаются десятки однотипных URL, которые конкурируют между собой и размывают сигналы релевантности.
Если задача не в том, чтобы «закрыть всё подряд», а в том, чтобы оставить в индексе только полезные страницы, нужен не общий совет, а понятная схема: сначала найти тип дубля, потом выбрать способ обработки, затем проверить результат в поиске и по ответам сервера.
Какие дубли в WordPress встречаются чаще всего
Перед правками полезно понять, с чем именно вы работаете. У разных типов дублей разная цена ошибки: где-то достаточно canonical, а где-то лучше убрать страницу из индекса полностью.
Архивы тегов и авторов
Теги часто создаются «на автомате» и дублируют смысл рубрик или отдельных записей. Архивы авторов на сайтах с одним автором обычно не несут отдельной ценности, но всё равно попадают в индекс. Если на таких страницах мало уникального текста, они становятся типичными кандидатами на noindex или полное отключение.
Пагинация и страницы вложений
Страницы /page/2/, /page/3/ и вложения медиафайлов часто индексируются как самостоятельные документы. Это не всегда ошибка, но если у них нет собственной поисковой ценности, они начинают конкурировать с основной страницей архива или записи.
Параметры URL и сортировки
Параметры вроде ?replytocom=, ?utm_..., ?sort= и внутренние фильтры могут плодить копии одного и того же контента. Если сайт использует кастомные фильтры или поиск, такие URL нужно отдельно проверить на наличие канонического адреса и индексации.
Диагностика: как понять, что именно индексируется лишнее
Начинать лучше не с настроек плагина, а с проверки фактов. Сначала нужно увидеть, какие URL уже попали в индекс и как они отдаются сервером.
- Проверьте отчёт Страницы в Google Search Console: ищите дубли с выбранным каноническим URL, страницы с альтернативным каноническим и исключённые по
noindex. - Сделайте выборку через поиск по сайту:
site:example.ruплюс тип URL, напримерsite:example.ru inurl:/tag/. - Откройте подозрительные страницы и посмотрите исходный код: есть ли
<link rel="canonical">, не стоит лиnoindex, не закрыт ли URL в robots.txt. - Проверьте ответ сервера через
curl -Iили DevTools: важно, чтобы нужная страница отдавала200, а не редирект на похожий URL.
Минимальная ручная проверка выглядит так:
curl -I https://example.ru/tag/wordpress/В ответе смотрите не только код, но и заголовки, если они есть. Для дублей важнее всего понять: страница доступна, закрыта от индексации или канонизирована на другой URL.
Что закрывать, а что оставлять в индексе
Здесь часто ошибаются: закрывают всё, что кажется «второстепенным», а потом теряют полезный трафик из архивов или страниц категорий. Решение зависит от роли страницы.
| Тип страницы | Что делать | Компромисс |
|---|---|---|
| Категории с уникальным текстом и трафиком | Оставить в индексе | Следить за canonical и пагинацией |
| Теги без самостоятельной ценности | noindex, follow или отключение архива | Потеря части внутренней перелинковки, если закрыть слишком агрессивно |
| Архивы автора на блоге с одним автором | Чаще всего закрыть | Если авторские страницы используются как витрина экспертизы, их можно доработать вместо закрытия |
| Страницы вложений | Редирект на файл или родительскую запись | Нужно проверить старые ссылки и медиа SEO |
| Параметры сортировки и поиска | Каноникал на чистый URL, иногда noindex | Если фильтры нужны для пользователей, нельзя просто блокировать их в robots.txt |
Пошаговое решение через SEO-плагин и настройки WordPress
Если сайт уже использует SEO-плагин, проще всего начать с него. Но важно понимать, что плагин не заменяет логику: он помогает выставить мета-роботы и canonical, а не исправляет плохую структуру сайта.
Шаг 1. Отключите лишние архивы в настройках
В большинстве случаев можно убрать из индекса архивы тегов, авторов, дат и форматов, если они не дают отдельной ценности. В Yoast SEO, Rank Math и похожих плагинах это делается в настройках архивов и таксономий. Смысл один: либо noindex, либо отключение самих архивов, если они не нужны пользователям.
Если вы не хотите зависеть только от интерфейса плагина, можно задать поведение программно. Например, для архивов тегов и авторов:
add_filter('wp_robots', function ($robots) {
if (is_tag() || is_author()) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});Этот вариант не отключает страницу, а только просит поисковик не включать её в индекс. Для многих архивов этого достаточно.
Шаг 2. Проверьте canonical на страницах с параметрами
Если на сайте есть фильтры, сортировки или внутренний поиск, canonical должен указывать на чистый URL без лишних параметров. Иначе поисковик может считать разные варианты одной страницы отдельными документами.
Для кастомных страниц иногда проще явно задать canonical через фильтр, если тема или плагин этого не делают корректно:
add_filter('get_canonical_url', function ($canonical, $post) {
if (is_singular('post')) {
return $canonical;
}
if (is_search()) {
return home_url('/');
}
return $canonical;
}, 10, 2);Здесь важно не переусердствовать: canonical должен вести на действительно эквивалентную страницу. Нельзя ставить его «на главную» просто чтобы убрать проблему.
Шаг 3. Уберите страницы вложений из индекса
Страницы attachment почти всегда бесполезны как посадочные. На практике лучше делать редирект на сам файл или на родительскую запись. Если у вас уже есть медиаархив с трафиком, сначала проверьте, не завязан ли он на старые ссылки.
Простой вариант — редиректить attachment на родителя, если он есть:
add_action('template_redirect', function () {
if (!is_attachment()) {
return;
}
$parent = wp_get_post_parent_id(get_the_ID());
if ($parent) {
wp_safe_redirect(get_permalink($parent), 301);
exit;
}
});Если родителя нет, можно отправлять на файл или на главную медиа-библиотеку, но это уже зависит от структуры сайта и старых ссылок.
Когда лучше править кодом, а когда хватит плагина
Если сайт типовой, плагина обычно достаточно. Но если дубли создаёт тема, кастомные таксономии или собственные фильтры, без кода не обойтись. Ниже — практическое сравнение.
| Подход | Плюсы | Минусы |
|---|---|---|
| SEO-плагин | Быстро, удобно для редактора | Не всегда покрывает кастомные типы архивов и параметры |
| Код в теме или mu-plugin | Точный контроль, меньше зависимостей | Нужна аккуратная поддержка после обновлений |
| robots.txt | Просто закрыть обход | Не решает проблему индексации уже известных URL и не заменяет canonical/noindex |
Если нужна более системная чистка дублей, имеет смысл посмотреть в сторону Clearfy Pro: у него есть настройки для удаления лишних архивов, дублей и технического мусора без ручного вмешательства в каждую мелочь. Но даже в этом случае полезно понимать, что именно вы выключаете и зачем.
Проверка результата после внедрения
После правок не ограничивайтесь визуальной проверкой. Нужно убедиться, что поисковик видит именно то, что вы задумали.
- Откройте несколько закрытых страниц и проверьте наличие
noindexв исходном коде. - Проверьте canonical на страницах с параметрами и пагинацией.
- Снова выполните
site:-поиск по типам URL, которые закрывали. - В Search Console отправьте на переобход важные страницы, если меняли canonical или редиректы.
- Посмотрите логи или отчёт по сканированию, если есть доступ: робот должен тратить меньше обхода на мусорные URL.
Для быстрой проверки можно использовать и браузер, и консоль. Например, если страница должна быть закрыта от индексации, в HTML должен быть виден соответствующий meta robots или заголовок, а canonical — вести на нужный адрес.
Частые ошибки и как их исправить
Закрыли в robots.txt, но URL всё равно в индексе
Это нормальная ситуация. Если URL уже известен поисковику, запрет на обход не гарантирует удаление из индекса. Для таких страниц чаще нужен noindex или редирект, а robots.txt используют только как дополнительный слой.
Поставили canonical на главную для всех страниц
Так делать нельзя. Canonical должен указывать на эквивалентную страницу, а не на «любую удобную». Иначе поисковик может проигнорировать подсказку или начать путаться в релевантности.
Закрыли архивы, которые реально приносят трафик
Это частая ошибка при массовой чистке. Перед отключением категории или тега проверьте их запросы в Search Console и статистику входов. Если архив ранжируется, лучше доработать его текстом, хлебными крошками и внутренними ссылками, а не убирать вслепую.
Удалили страницы вложений без редиректа
Если на медиа-страницы уже есть внешние или внутренние ссылки, массовое удаление без 301 приведёт к 404. Для старых сайтов это особенно заметно после миграций и смены темы.
Практические советы по безопасности и производительности
Чем меньше лишних архивов и параметров индексируется, тем меньше мусора сканирует бот. Это не магическая оптимизация скорости, но на больших сайтах она снижает нагрузку на обход и упрощает поддержку структуры.
- Не плодите теги ради одного-двух постов — лучше использовать рубрики или внутренние блоки связанного контента.
- Если включаете фильтры и сортировки, заранее продумайте canonical и правила индексации.
- Не правьте
functions.phpна живом сайте без бэкапа: для таких задач удобнее отдельный mu-plugin. - После обновления темы ещё раз проверьте архивы и шаблоны: разработчики иногда меняют вывод canonical или robots.
Если у вас много технических дублей и нужна не точечная правка, а системная чистка SEO-слоя, можно использовать инструменты вроде Clearfy Pro вместе с ручной проверкой критичных URL. Автоматизация полезна, но только если вы понимаете, какие страницы должны остаться доступными для поиска, а какие — нет.
В итоге рабочая схема простая: сначала находите тип дубля, затем выбираете между noindex, canonical и редиректом, после этого проверяете исходный код, ответы сервера и отчёты поисковика. Если на каком-то шаге результат не совпал с ожиданием, проблема обычно не в индексации как таковой, а в том, что страница изначально была выбрана не тем способом.