На WordPress дубли чаще всего появляются не из-за «плохого SEO», а из-за штатной логики CMS: архивы, страницы вложений, пагинация, теги, авторы, параметры сортировки, версии с ?replytocom и похожие URL. Если оставить это как есть, поисковик тратит краулинговый бюджет на мусорные адреса, а в отчётах Search Console растёт число страниц без ценности.
Задача здесь не в том, чтобы закрыть всё подряд. Правильный подход — оставить в индексе только те URL, которые реально нужны для трафика и навигации, а остальное либо убрать из индекса, либо склеить canonical-ом, либо запретить к обходу в robots.txt там, где это оправдано.
Какие дубли WordPress появляются чаще всего
Перед правкой полезно понять, что именно вы закрываете. У разных типов дублей разная цена ошибки: одни можно смело убирать из индекса, другие лучше оставить доступными для обхода, но указать канонический адрес.
Типовые источники дублей
- страницы вложений медиафайлов вида
/attachment/или отдельные URL изображений; - архивы тегов и авторов, если они не несут самостоятельной ценности;
- страницы пагинации архивов и комментариев;
- параметры в URL: сортировка, фильтры, UTM,
?replytocom; - страницы поиска по сайту;
- технические страницы плагинов, которые случайно открыты для индексации.
Если сайт небольшой, часть этих URL вообще не нужна в поиске. Если проект контентный, архивы категорий могут быть полезны, а вот теги — нет. Поэтому сначала нужна диагностика, а уже потом массовая правка.
Диагностика: что именно индексируется лишнего
Самый практичный способ — посмотреть не на абстрактные советы, а на фактические URL в индексе и в обходе. Для этого используйте Search Console, серверные логи и выборочный просмотр исходного кода страниц.
Что проверить в первую очередь
- отчёт «Страницы» в Google Search Console: какие URL помечены как дубли, просканированные, но не проиндексированные, или с альтернативным каноническим адресом;
- поиск по сайту через
site:example.ruс конкретными шаблонами URL; - наличие canonical в HTML;
- мета-тег
robotsна архивных и служебных страницах; - редиректы с вложений и старых URL;
- параметры в адресной строке, которые создают новые страницы без смысла.
Если у вас есть доступ к логам, посмотрите, какие URL чаще всего запрашивают боты. Иногда в индексе проблема не в том, что страница открыта, а в том, что её слишком часто обходят из-за внутренних ссылок.
Пошаговое решение: что закрывать, а что оставлять
Ниже — рабочая схема, которая обычно даёт предсказуемый результат без лишнего риска. Она не требует «магии» и подходит для большинства сайтов на WordPress.
1. Закройте страницы вложений и сделайте редирект на файл или запись
Страницы вложений почти всегда бесполезны как посадочные. Если они уже индексируются, лучше перевести их на родительскую запись или на сам файл, если это оправдано. Самый безопасный вариант — редирект 301 на родительский пост, а если его нет, то на медиафайл или главную.
<?php
add_action('template_redirect', function () {
if (is_attachment()) {
$parent_id = wp_get_post_parent_id(get_queried_object_id());
if ($parent_id) {
wp_redirect(get_permalink($parent_id), 301);
exit;
}
wp_redirect(home_url('/'), 301);
exit;
}
});Этот код лучше добавлять в дочернюю тему или в небольшой mu-plugin, а не в файл темы, который может обновляться. Если на сайте уже есть плагин для SEO, сначала проверьте, не делает ли он это сам, чтобы не получить двойной редирект.
2. Уберите из индекса архивы, которые не дают трафик
Теги, авторы, даты и некоторые таксономии часто создают много тонких страниц. Если они не используются как полноценные точки входа, их лучше закрыть от индексации через noindex, а не через robots.txt. Так поисковик увидит директиву на самой странице.
Для архивов WordPress можно добавить мета-тег через wp_robots:
<?php
add_filter('wp_robots', function (array $robots) {
if (is_tag() || is_author() || is_date()) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});Если у вас уже стоит SEO-плагин, проверьте, не конфликтует ли он с этим фильтром. В некоторых случаях проще управлять индексированием через интерфейс плагина, чем дублировать логику в коде.
3. Нормализуйте параметры URL
Параметры вроде ?replytocom или фильтров сортировки часто создают десятки дублей одной и той же страницы. Здесь не всегда нужен редирект: иногда достаточно canonical на чистый URL. Но если параметр не нужен пользователю, лучше убрать его из генерации ссылок на уровне темы или плагина.
Для комментариев можно отключить replytocom, если он не нужен:
<?php
add_filter('comment_reply_link', function ($link) {
return preg_replace('/([?&])replytocom=\d+/', '', $link);
});Этот пример не универсален для всех тем, но он показывает направление: не лечить симптом в индексе, а убрать источник дубля в генерации ссылок.
4. Проверьте canonical на архивных и служебных страницах
Canonical не заменяет noindex, но помогает, когда у страницы есть несколько адресов. Например, пагинация, сортировка или UTM-параметры могут оставаться доступными, но поисковик должен понимать основной URL.
Проверять canonical лучше вручную в исходном коде и через инспекцию URL в Search Console. Если canonical указывает на несуществующую страницу, на главную без причины или на саму себя в конфликте с редиректом — это уже ошибка, а не оптимизация.
Сравнение подходов: плагин, код или robots.txt
| Подход | Когда подходит | Плюс | Минус |
|---|---|---|---|
| SEO-плагин | Нужно быстро закрыть архивы, теги, автора, вложения | Меньше ручной работы | Нужно проверить, что он не конфликтует с темой и другими плагинами |
| Код в теме или mu-plugin | Нужна точечная логика под конкретный сайт | Полный контроль | Требует тестирования после обновлений |
| robots.txt | Нужно снизить обход технических URL | Просто ограничить crawl | Не гарантирует исключение из индекса, если URL уже известен поисковику |
Если задача — именно убрать дубли из индекса, robots.txt не должен быть единственным инструментом. Для уже известных поисковику URL надёжнее использовать noindex или редирект.
Проверка результата после внедрения
После правок не стоит сразу делать выводы по позициям. Сначала проверьте техническое состояние страниц и только потом смотрите на динамику индексации.
Чек-лист проверки
- открывается ли нужный URL без цепочек редиректов;
- возвращает ли страница вложения 301 на родительскую запись или другой ожидаемый адрес;
- есть ли на закрытых архивах
noindexв исходном коде; - не пропал ли canonical на важных страницах;
- не закрыли ли случайно категории, которые дают трафик;
- не появились ли ошибки 404 после удаления параметров из ссылок;
- обновились ли данные в Search Console после переобхода важных URL.
Для быстрой проверки можно открыть исходный код страницы и найти строку с robots или canonical. Если используете командную строку, полезно проверить заголовки и редиректы через curl:
curl -I https://example.ru/sample-attachment/
curl -I https://example.ru/tag/sample/
Если в ответе есть 301 и нужный конечный адрес, значит редирект работает. Если страница закрыта через noindex, убедитесь, что это именно тот тип страницы, который вы планировали убрать из индекса.
Частые ошибки и как их исправить
Закрыли всё через robots.txt
Это распространённая ошибка: URL перестаёт обходиться, но уже известные поисковику страницы могут оставаться в индексе без нормального сигнала на удаление. Если нужен именно выход из индекса, используйте noindex или редирект.
Поставили noindex на важные категории
Иногда под раздачу попадают категории, которые реально собирают трафик. Причина обычно в том, что настройки копируют «на глаз», без анализа запросов и страниц входа. Исправление простое: вернуть индексирование на полезные архивы и оставить noindex только для мусорных таксономий.
Сделали редирект вложений на главную
Это не всегда критично, но часто бессмысленно. Если у вложения есть родительская запись, логичнее отправлять пользователя и бота туда. Главная — запасной вариант, а не универсальная цель.
Не учли конфликт с SEO-плагином
Если плагин уже управляет canonical и robots, а вы добавили свою логику в тему, можно получить дублирующиеся мета-теги или противоречивые директивы. После внедрения всегда проверяйте исходный код страниц и отключайте один из источников логики.
Практические советы по безопасности и производительности
Чем меньше лишних URL генерирует сайт, тем проще ему жить под нагрузкой и тем меньше мусора попадает в обход. Это не только SEO-вопрос, но и вопрос поддержки.
- не создавайте редиректы в цикле через несколько плагинов одновременно;
- не ставьте тяжёлые условия в
template_redirectбез необходимости; - проверяйте, что правила редиректа не ломают REST API и админку;
- не закрывайте от индексации страницы, которые нужны для внутренней перелинковки;
- после изменений обновите карту сайта и проверьте, не попали ли туда закрытые URL.
Если нужен более системный подход к чистке дублей и технических страниц, в экосистеме WPShop есть Clearfy Pro, который закрывает часть типовых задач по SEO и технической оптимизации WordPress: https://wpshop.ru/plugins/clearfy. Но даже с плагином всё равно стоит проверить, какие именно URL он меняет на вашем сайте, а не полагаться на настройки вслепую.
Главный критерий успеха здесь простой: в индексе остаются только те страницы, которые вы действительно хотите видеть в поиске, а служебные и повторяющиеся URL перестают конкурировать с основным контентом.