В WordPress дубли чаще всего появляются не из-за «плохого SEO», а из-за штатного поведения системы: архивы тегов, авторов, дат, страницы пагинации, параметры в URL, версии с ?replytocom, а иногда и технические страницы темы или плагинов. Если это не контролировать, поисковик тратит краулинговый бюджет на мусорные URL, а в индексе остаются страницы, которые не должны конкурировать с основными материалами.
Ниже — рабочая схема, как понять, что именно дублируется, и что закрывать через noindex, canonical или редирект. Без универсальных советов вроде «поставьте SEO-плагин и всё само решится» — в реальности нужно сначала диагностировать источник дублей.
Какие дубли WordPress создаёт чаще всего
У одного и того же материала в WordPress может быть несколько адресов. Самая частая картина:
- запись доступна в основном URL и в архиве рубрики;
- страница автора дублирует список материалов;
- теги создают почти пустые архивы с тем же набором записей;
- пагинация генерирует отдельные URL вида
/page/2/; - поисковые параметры и UTM создают новые адреса с тем же контентом;
?replytocomплодит отдельные версии страниц с комментариями;- страницы вложений медиафайлов индексируются отдельно, хотя полезного контента там нет.
Не все из этих URL нужно удалять из индекса. Например, пагинация в некоторых проектах полезна, а архивы рубрик могут быть полноценными посадочными страницами. Ошибка начинается там, где всё закрывают одинаково.
Диагностика проблемы: что именно уже попало в индекс
Перед правками проверьте, какие URL поисковик уже видит как отдельные страницы. Самый быстрый способ — поиск по оператору site: и фильтрация по типам URL. Но этого недостаточно: в Search Console видно, что именно исключено, продублировано или найдено, но не проиндексировано.
Полезно смотреть на три признака:
- в индексе есть URL с параметрами, которые не нужны пользователю;
- одна и та же страница доступна по нескольким адресам без canonical;
- в отчётах Search Console растёт число «Дубликат, Google выбрал другой канонический URL».
Если у вас есть доступ к серверным логам или аналитике, проверьте, не ходят ли боты на мусорные URL слишком часто. Это особенно заметно на сайтах с большим количеством комментариев, архивов и фильтров.
Что смотреть в первую очередь
- страницы тегов и авторов;
- архивы дат;
- страницы вложений;
- поисковые URL вида
?s=; - параметры сортировки и фильтрации;
- URL с
?replytocom; - дубли главной страницы с
/page/2/и другими вариантами.
Как выбрать способ: noindex, canonical или редирект
Универсального ответа нет. Сначала определите, что делать с конкретным типом дубля: оставить как вспомогательную страницу, закрыть от индексации или полностью перенаправить на основной адрес.
| Ситуация | Что делать | Комментарий |
|---|---|---|
| Архив тегов полезен | noindex,follow | Страница остаётся доступной, но не конкурирует с основным контентом |
| Страница вложения не нужна | 301 на файл или родительскую запись | Лучше убрать из индекса совсем |
| Параметр создаёт тот же контент | canonical на чистый URL | Подходит для сортировок и UTM, если они не меняют контент |
?replytocom | 301 или фильтрация параметра | Часто это чистый мусор для индекса |
| Архив автора на блоге одного автора | noindex или отключение архива | Если страница не несёт самостоятельной ценности |
Если сомневаетесь, не закрывайте всё подряд. Ошибка в настройке индексации часто хуже, чем сам дубль: можно случайно убрать из поиска полезные архивы или пагинацию.
Пошаговое решение через код темы или мини-плагин
Если нужен контроль без привязки к плагину, часть задач можно решить кодом. Лучше вынести это в мини-плагин или в mu-plugin, а не в functions.php темы: так настройки не исчезнут при смене шаблона.
1. Закрыть страницы вложений и архивы автора на сайте с одним автором
<?php
/**
* Plugin Name: WP Duplicate Cleanup
*/
add_action('template_redirect', function () {
if (is_attachment()) {
$parent = wp_get_post_parent_id(get_queried_object_id());
if ($parent) {
wp_safe_redirect(get_permalink($parent), 301);
exit;
}
wp_safe_redirect(home_url('/'), 301);
exit;
}
if (is_author() && count_users()['total_users'] <= 1) {
wp_safe_redirect(home_url('/'), 301);
exit;
}
});Этот вариант не закрывает архив автора через noindex, а сразу убирает страницу из обхода. Для вложений это обычно оправдано: отдельная страница файла редко нужна в индексе.
2. Добавить canonical для URL с параметрами
<?php
add_filter('get_canonical_url', function ($canonical, $post) {
if (is_admin() || ! $post instanceof WP_Post) {
return $canonical;
}
$uri = $_SERVER['REQUEST_URI'] ?? '';
if (strpos($uri, '?') === false) {
return $canonical;
}
$allowed = ['utm_source', 'utm_medium', 'utm_campaign'];
$query = [];
parse_str(parse_url(home_url($uri), PHP_URL_QUERY) ?? '', $query);
foreach ($query as $key => $value) {
if (!in_array($key, $allowed, true)) {
unset($query[$key]);
}
}
return get_permalink($post);
}, 10, 2);Здесь важный момент: canonical не должен вести на случайный URL с параметрами. Если параметры не меняют контент, канонический адрес должен быть чистым.
3. Убрать ?replytocom и похожие мусорные параметры
<?php
add_action('template_redirect', function () {
if (isset($_GET['replytocom']) && is_singular()) {
wp_safe_redirect(remove_query_arg('replytocom'), 301);
exit;
}
});Это простой и предсказуемый способ. Если комментарии активно используются, проверьте, не ломает ли редирект переход к форме ответа. В большинстве случаев он не нужен для SEO и только создаёт дубли.
Если используете SEO-плагин: что проверить в настройках
Плагин удобен, когда нужно массово управлять мета-тегами и архивами без кода. Но даже в этом случае важно проверить конкретные переключатели, а не полагаться на дефолты.
- закрыты ли архивы тегов, если они пустые или почти пустые;
- нужен ли индекс архивов авторов;
- не открыты ли страницы вложений;
- не создаёт ли плагин отдельные canonical для пагинации;
- не дублируются ли title и description на архивных страницах;
- не генерируются ли лишние sitemap для служебных типов записей.
Если нужен более жёсткий контроль над дублями и техническими страницами, в связке с SEO-плагином часто используют Clearfy Pro: он помогает отключать лишние архивы, чистить служебные элементы и наводить порядок в технической части сайта. Но даже с ним стоит проверить итоговый HTML, а не только галочки в админке.
Проверка результата после внедрения
После правок не ограничивайтесь визуальной проверкой страницы в браузере. Нужно убедиться, что поисковик видит именно то, что вы задумали.
- Откройте страницу с параметром и проверьте, что редирект или canonical ведёт на чистый URL.
- Посмотрите исходный код: нет ли нескольких canonical одновременно.
- Проверьте заголовок
X-Robots-Tag, если закрываете URL на уровне сервера. - В Search Console отправьте на переобход несколько типовых URL.
- Через несколько дней проверьте отчёт по индексированию и статус канонических страниц.
Если вы закрывали архивы через noindex, убедитесь, что они всё ещё доступны для обхода и не отдают ошибку 404. Если делали 301, проверьте цепочки редиректов: URL должен вести сразу на финальный адрес, без промежуточных прыжков.
Частые ошибки и как их исправить
Закрыли полезные страницы вместе с мусором
Так бывает, когда под один шаблон попадают и теги, и рубрики, и авторы. Исправление простое: разделите типы архивов по ценности. Рубрики часто можно оставить, теги — закрыть, если они не несут самостоятельной структуры.
Поставили noindex, но оставили дубли в sitemap
Если URL не должен индексироваться, он не должен попадать и в карту сайта. Иначе вы сами подсказываете поисковику, что страница важна, а потом просите её не индексировать.
Сделали canonical на главную для всех дублей
Это грубая ошибка. Canonical должен указывать на максимально близкую по смыслу страницу, а не просто «куда-нибудь». Иначе поисковик может проигнорировать подсказку.
Редиректите всё на главную
Для вложений, параметров и архивов это часто плохая идея. Пользователь и бот должны попадать на релевантную страницу, а не на главную без контекста.
Не проверили пагинацию
Если у вас длинные архивы, страницы /page/2/ и дальше могут быть нужны. Их не стоит автоматически закрывать, если они помогают обходу и навигации.
Практические советы по безопасности и производительности
Чистка дублей — это не только SEO. Чем меньше мусорных URL, тем меньше лишних запросов к базе и меньше шансов, что бот будет бесконечно обходить бесполезные комбинации параметров.
- не плодите архивы таксономий без смысла;
- ограничьте количество параметров, которые реально меняют контент;
- не используйте плагины, которые создают отдельные страницы под каждый фильтр без необходимости;
- проверяйте, не открывают ли темы и плагины служебные типы записей в индексацию;
- после правок очистите кеш страницы и объектный кеш, если он есть.
Если сайт большой, сначала протестируйте изменения на staging-копии. Особенно это важно, когда вы меняете правила редиректов: одна неверная регулярка может отправить в 301 не только мусорные URL, но и реальные страницы.
В итоге рабочая схема всегда одна и та же: сначала находите источник дубля, потом выбираете правильный способ обработки, затем проверяете HTML, редиректы и статус в Search Console. Без этого можно долго «чистить SEO», но так и не понять, что именно было исправлено.