Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелких настроек: архивы тегов, страницы пагинации, версии с параметрами, дубли категорий, страницы автора, вложения медиа, а иногда и одинаковый контент в теме и плагинах. Проблема в том, что поисковик видит несколько URL с одним и тем же или почти одинаковым содержимым и начинает выбирать канонический адрес не так, как вы ожидаете.
Ниже — рабочий сценарий: как сначала найти источник дублей, потом закрыть лишнее без потери нужных страниц в индексе и, наконец, проверить, что исправление действительно сработало.
Как понять, что у сайта есть проблема с дублями
Не стоит начинать с правки robots.txt наугад. Сначала нужно понять, какие именно URL дублируются и почему. В WordPress чаще всего встречаются такие признаки:
- в поиске индексируются и
/category/slug/, и похожие архивы с другим префиксом; - одна и та же запись доступна через несколько адресов, если тема или плагин формируют альтернативные ссылки;
- страницы пагинации, теги и архивы автора дают почти одинаковые сниппеты;
- URL с параметрами сортировки, UTM или фильтрами попадают в индекс;
- медиа-вложения открываются как отдельные страницы без полезного контента.
Что смотреть в первую очередь
Самый быстрый способ — открыть отчеты в Google Search Console и посмотреть разделы с исключенными страницами, а также страницы, которые были просканированы, но не проиндексированы. Если у вас есть доступ к серверным логам или краулеру вроде Screaming Frog, полезно сравнить, какие URL реально обходятся ботом чаще всего.
Еще один практичный тест — вручную проверить несколько типичных адресов:
- главная запись;
- архив категории;
- страница тега;
- страница автора;
- страница вложения изображения;
- URL с параметром, например
?utm_source=testили?replytocom=1.
Если контент одинаковый или почти одинаковый, а канонический URL не задан явно, это уже кандидат на исправление.
Какие дубли в WordPress можно закрывать, а какие — нет
Здесь важно не смешивать технические и полезные страницы. Закрывать нужно то, что не несет самостоятельной ценности для поиска. Оставлять в индексе стоит страницы, которые реально отвечают на отдельный запрос пользователя.
| Тип URL | Что делать | Комментарий |
|---|---|---|
| Медиа-вложения | Редиректить на файл или родительскую запись, либо закрывать от индексации | Если у вложения нет отдельной ценности, отдельная страница обычно не нужна |
| Архивы тегов | Оставлять только если теги реально используются как навигация и дают трафик | Иначе они быстро превращаются в мусорные дубли |
| Пагинация архивов | Обычно не закрывать целиком, а следить за canonical и качеством шаблона | Пагинация нужна для обхода и внутренней перелинковки |
| URL с параметрами | Чаще закрывать или нормализовать | Особенно если параметры не меняют смысл страницы |
| Страницы автора на блоге одного автора | Иногда закрывать или упрощать | Если автор один и архив не несет пользы, это частый источник дублей |
Пошаговое решение: от диагностики к исправлению
Шаг 1. Найдите источник дубля в шаблоне или плагине
Если дубли появляются на уровне темы, часто виноваты неправильные canonical-ссылки, лишние архивы или повторяющиеся блоки контента. Если проблема в плагине, он может генерировать отдельные страницы для фильтров, медиа или таксономий.
Для проверки canonical на конкретной странице откройте исходный код и найдите тег rel="canonical". Он должен указывать на один основной URL, а не на текущую вариацию с параметрами.
Шаг 2. Нормализуйте URL через canonical и редиректы
Если у страницы есть несколько адресов, лучше не полагаться только на noindex. В идеале лишние варианты должны вести на основной URL через 301-редирект, а canonical должен подтверждать выбранную версию.
Пример: если у вас есть страницы вложений, которые не нужны как отдельные посадочные, можно отправлять их на родительскую запись:
<?php
add_action('template_redirect', function () {
if (is_attachment()) {
$parent_id = get_post_field('post_parent', get_queried_object_id());
if ($parent_id) {
wp_redirect(get_permalink($parent_id), 301);
exit;
}
wp_redirect(home_url('/'), 301);
exit;
}
});Этот вариант рабочий, но применять его нужно аккуратно: если у медиафайлов есть внешний трафик или они используются как отдельные страницы, редирект может быть лишним. Тогда лучше сначала проверить, есть ли у них реальная ценность.
Шаг 3. Закройте технические архивы от индексации
Для архивов, которые не должны участвовать в поиске, удобнее использовать SEO-плагин или фильтры темы. Если нужен код, можно добавить noindex для отдельных типов архивов через wp_robots:
<?php
add_filter('wp_robots', function (array $robots) {
if (is_tag() || is_author() || is_attachment()) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});Это не заменяет canonical и не решает проблему одинаковых URL, но помогает убрать из индекса страницы, которые не должны там находиться. Для массовой чистки сайта удобнее использовать SEO-плагин с управлением архивами и мета-тегами, например Clearfy Pro: https://wpshop.ru/plugins/clearfy.
Шаг 4. Уберите дубли из параметров и служебных URL
Если дубли создаются параметрами, сначала проверьте, можно ли отключить их генерацию в плагине. Например, некоторые фильтры, сортировки и трекинговые параметры вообще не нужны для индексации. Если отключить их нельзя, настройте canonical на чистый URL и не добавляйте такие адреса в sitemap.
Для WordPress-сайтов с большим количеством служебных параметров полезно проверить, не создают ли они отдельные страницы в кеше, в карте сайта или в навигации. Часто проблема не в самом параметре, а в том, что тема выводит его как полноценную ссылку.
Как проверить, что исправление сработало
После внедрения не ограничивайтесь визуальной проверкой. Нужны минимум три уровня контроля.
- Откройте проблемный URL и убедитесь, что он редиректит на основной адрес или получает правильный canonical.
- Проверьте исходный код страницы и убедитесь, что
noindexстоит только там, где он действительно нужен. - В Search Console отправьте проверку URL и посмотрите, как Google видит канонический адрес после переобхода.
Если у вас есть краулер, повторно просканируйте набор проблемных страниц и сравните:
- сколько URL отдает 200 OK;
- сколько страниц с одинаковым title и description осталось;
- есть ли цепочки редиректов;
- не появились ли случайно 404 вместо 301.
Отдельно проверьте sitemap.xml: туда не должны попадать страницы, которые вы закрыли от индексации или редиректите на другой адрес.
Частые ошибки и как их исправить
Закрыли все архивы подряд
Это типичная ошибка, когда noindex ставят на категории, теги, пагинацию и автора без разбора. В итоге ломается внутренняя навигация и снижается качество обхода сайта. Исправление простое: оставьте в индексе только те архивы, которые реально полезны пользователю, а остальное закрывайте точечно.
Поставили noindex, но не убрали URL из sitemap
Поисковик продолжает видеть страницу как важную, потому что она есть в карте сайта. В такой ситуации индексация может затянуться. Уберите URL из sitemap и проверьте, что он не генерируется повторно плагином.
Сделали 302 вместо 301
Для постоянной нормализации дублей нужен именно 301-редирект. Временный редирект оставляет поисковику слишком много свободы и не всегда передает сигнал о замене URL.
Редиректите все вложения без проверки
Если на медиа-страницы есть прямые ссылки из поиска или внешних сайтов, массовый редирект может обнулить их трафик. Сначала посмотрите статистику по этим URL, потом решайте, нужен ли редирект или достаточно закрыть страницу от индексации.
Меняете canonical на уровне шаблона, но забываете про кеш
После правки шаблона старый canonical может продолжать отдаваться из кеша страницы или CDN. Очистите кеш сайта, серверный кеш и, если используется, кеш на уровне Cloudflare или другого прокси.
Чек-лист перед публикацией правок
- проверен источник дубля: шаблон, плагин, параметры или архив;
- выбран один основной URL для каждой группы страниц;
- лишние адреса либо редиректят, либо закрыты от индексации;
- canonical указывает на правильную страницу;
- URL исключены из sitemap, если они не должны индексироваться;
- очищен кеш сайта и CDN;
- проверка в Search Console запущена повторно.
Что делать, если дубли создает тема или плагин
Если источник проблемы в коде темы, не правьте файлы напрямую без необходимости. Лучше вынести точечную логику в дочернюю тему или небольшой mu-plugin, чтобы обновление не затерло исправление. Если дубли создает SEO- или utility-плагин, сначала проверьте его настройки: часто достаточно отключить архивы, вложения, лишние таксономии или служебные страницы.
Когда проблема системная и на сайте много технического мусора, проще один раз собрать базовую чистку, чем вручную чинить каждый URL. Но даже в этом случае важно не удалять все подряд: у WordPress есть страницы, которые выглядят как дубли только на первый взгляд, а на деле нужны для обхода и структуры сайта.