Дубли в WordPress часто появляются не из-за одной ошибки, а из-за набора мелких настроек: архивы тегов, авторов, дат, страницы пагинации, фильтры в URL и отдельные шаблоны темы. В результате поисковик видит несколько адресов с почти одинаковым контентом, а вы получаете размытый вес страниц и лишние обходы краулером.
Ниже разберём именно практический сценарий: как найти такие дубли, что закрывать, что оставлять в индексе и как проверить, что после правок сайт не потерял нужные страницы.
Как понять, что проблема именно в дублях архивов и пагинации
Сначала не трогайте код. Посмотрите, какие URL реально индексируются и повторяются в выдаче. Для этого удобно сравнить несколько признаков:
- одинаковые заголовки у разных URL;
- одинаковые сниппеты у архивов и их страниц пагинации;
- в Search Console растут страницы вида
/page/2/,/page/3/,/tag/...,/author/...; - в логах или аналитике заметно много заходов на служебные архивы, которые не дают трафика.
Типичный пример: у записи есть основной URL, а рядом индексируются архив рубрики, архив тега, архив автора и несколько страниц пагинации. Контент там не полностью одинаковый, но для поисковой системы это часто выглядит как набор очень похожих страниц.
Что проверить в первую очередь
- Рубрики и теги: нужны ли они в индексе или это просто навигация.
- Архивы автора: если на сайте один автор, это почти всегда кандидат на закрытие.
- Архивы дат: для новостного блога могут быть полезны, для обычного сайта — часто нет.
- Страницы пагинации архивов: они не должны конкурировать с основной страницей архива.
- Фильтры и параметры в URL:
?sort=,?filter=,?replytocom=и похожие.
Диагностика: где именно рождаются дубли
Если сайт на классической теме, дубли обычно создаются в шаблонах архива и в SEO-настройках. Если используется плагин для SEO, часть логики может идти от него, но не стоит полагаться только на плагин: тема тоже может выводить лишние ссылки, canonical или пагинацию без оглядки на индексируемость.
Проверьте исходный код проблемной страницы и найдите:
<link rel="canonical">— указывает ли он на правильный URL;meta name="robots"— не конфликтует лиnoindexс canonical;- есть ли в HTML ссылки на страницы пагинации и архивы, которые вы не хотите продвигать;
- не дублируется ли один и тот же блок контента в нескольких шаблонах.
Если нужно быстро посмотреть, что отдаёт сервер, используйте curl:
curl -I https://example.com/category/news/page/2/И отдельно проверьте HTML:
curl -s https://example.com/category/news/page/2/ | grep -iE 'canonical|robots|pagination'Это не заменяет полноценную проверку в браузере, но быстро показывает, есть ли у страницы каноникал и не ломает ли тема базовую разметку.
Пошаговое решение без переезда сайта
1. Определите, какие архивы должны остаться открытыми
Не закрывайте всё подряд. Для контентного сайта обычно оставляют рубрики, а теги и архивы автора закрывают или сильно ограничивают. Но это зависит от структуры сайта. Если теги реально используются как полноценная навигация и дают трафик, их можно оставить, но тогда нужно следить за качеством страниц и не плодить пустые теги.
Практичный ориентир такой: индексируются только те архивы, которые имеют уникальную ценность для пользователя и не дублируют основной контент.
2. Уберите лишние архивы через код темы или дочернюю тему
Если задача — не просто скрыть архив, а убрать его из индекса и из навигации, можно отключить сам тип архива. Для автора и дат это делается через фильтры WordPress, если тема или SEO-плагин не дают нужного результата.
<?php
// Отключаем архивы автора и даты.
add_action('init', function () {
remove_action('wp_head', 'wp_generator');
});
add_filter('author_rewrite_rules', function ($rules) {
return array();
});
add_filter('date_rewrite_rules', function ($rules) {
return array();
});Этот пример не универсален для всех сайтов и тем, поэтому перед применением проверьте, не сломает ли он уже существующие ссылки. На практике чаще используют более мягкий подход: оставляют архивы доступными, но закрывают их от индексации и убирают из карты сайта.
3. Закройте тонкие архивы от индексации
Если у вас уже есть SEO-плагин, используйте его настройки для noindex на архивы автора, даты, теги или отдельные таксономии. Если плагина нет или нужно точечно обработать конкретный тип архива, можно добавить noindex через wp_head.
<?php
add_action('wp_head', function () {
if (is_author() || is_date() || is_tag()) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
});Важно: не дублируйте эту логику в нескольких местах. Если SEO-плагин уже выводит robots meta, второй такой же тег создаст конфликт. Тогда поисковик может проигнорировать часть указаний или выбрать не тот вариант.
4. Настройте canonical для страниц пагинации
Для пагинации не всегда нужен canonical на первую страницу. В большинстве случаев страница /page/2/ должна канонизировать сама себя, иначе вы можете сломать индексацию более глубоких страниц архива. Если тема или плагин ставят canonical на первую страницу архива для всех страниц пагинации, это уже проблема.
Проверьте, что на странице пагинации canonical указывает на текущий URL, а не на корень архива. Если у вас кастомная логика, можно использовать фильтр wpseo_canonical в Yoast SEO или аналогичный фильтр вашего SEO-плагина. Но если вы не уверены в конкретном плагине, безопаснее править шаблон и не вмешиваться в чужую логику без необходимости.
5. Уберите дубли из sitemap
Если архив не должен индексироваться, он не должен попадать и в XML Sitemap. Иначе вы сами подсказываете поисковику URL, которые потом просите не индексировать. Это частая причина, почему изменения долго не дают эффекта.
Проверьте настройки SEO-плагина и убедитесь, что:
- закрытые таксономии исключены из sitemap;
- страницы автора и даты не попадают в карту сайта;
- пагинация архивов не добавляется как отдельные URL в sitemap, если этого не требует ваша структура.
Сравнение подходов: плагин, код или гибрид
| Подход | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| SEO-плагин | Нужно быстро закрыть архивы и управлять sitemap | Меньше кода, проще сопровождать | Не всегда решает конфликт шаблонов темы |
| Код в дочерней теме | Нужна точечная логика для конкретных архивов | Гибкость, контроль над выводом | Нужно тестировать после обновлений темы |
| Гибрид | Есть SEO-плагин, но тема выводит лишнее | Можно разделить обязанности | Легко задвоить robots/canonical, если не следить |
На практике гибрид чаще всего самый рабочий вариант: SEO-плагин управляет индексированием и sitemap, а тема не выводит лишние блоки и ссылки на служебные архивы.
Проверка результата после внедрения
После правок не ограничивайтесь визуальной проверкой. Смотрите на фактический ответ страницы и на то, что видит поисковик.
- Откройте проблемный URL в браузере и проверьте исходный код.
- Убедитесь, что на закрытых архивах есть
noindex,followили другой ожидаемый режим. - Проверьте canonical на страницах пагинации.
- Сравните sitemap до и после изменений.
- В Search Console отправьте на переобход несколько URL и посмотрите, как меняется статус индексации.
Для быстрой проверки можно использовать такой шаблон:
curl -s https://example.com/tag/news/ | grep -iE 'robots|canonical'
curl -s https://example.com/category/news/page/2/ | grep -iE 'robots|canonical'Если на закрытой странице canonical указывает на саму страницу, а robots содержит noindex, это нормальная рабочая комбинация для большинства сценариев. Если же canonical ведёт на первую страницу, а сама страница при этом остаётся в sitemap, нужно пересматривать логику.
Частые ошибки и как их исправить
Два источника robots meta
Одна из самых неприятных ошибок — когда robots meta выводит и SEO-плагин, и тема. В HTML появляется два тега meta name="robots". Исправление простое: оставьте один источник правды. Обычно это SEO-плагин.
Закрыли архив, но оставили его в sitemap
Такое часто бывает после ручной правки шаблона. Поисковик продолжает получать URL из карты сайта и тратит на них обход. Уберите закрытые архивы из sitemap в настройках плагина или через его фильтры.
Canonical на пагинации указывает на первую страницу
Это ломает смысл пагинации. Страницы /page/2/ и дальше могут выпадать из индекса, хотя на них есть уникальный набор записей. Проверьте шаблон темы и SEO-настройки, особенно если после обновления тема начала переопределять head-блок.
Закрыли теги, но оставили ссылки на них в блоках и меню
Сами по себе ссылки не страшны, но они продолжают вести пользователей и ботов на закрытые страницы. Если тегов много и они не нужны, уберите их из навигации, облака тегов и виджетов.
Пытались решить всё через robots.txt
robots.txt не заменяет noindex. Если URL уже известен поисковику, запрет на обход не гарантирует удаление из индекса. Для дублей и тонких архивов важнее корректный noindex, canonical и чистый sitemap.
Практические советы по безопасности и производительности
Любые правки лучше делать в дочерней теме или через небольшой mu-plugin, а не в родительской теме. Тогда обновление не затрёт изменения. Перед внедрением сохраните резервную копию и проверьте сайт на staging-копии, если она есть.
- Не отключайте архивы, если на них реально есть трафик и входящие ссылки.
- Не закрывайте всё через
noindexбез анализа: иногда проще убрать пустые таксономии и оставить полезные архивы. - Не меняйте canonical вручную на всех страницах подряд, если не понимаете, как тема строит пагинацию.
- После правок проверьте скорость загрузки: лишние SEO-скрипты и тяжёлые шаблоны архива тоже могут влиять на производительность.
Если нужен более системный контроль дублей, можно использовать Clearfy Pro как набор точечных настроек для чистки сайта и SEO-гигиены: https://wpshop.ru/plugins/clearfy. Но даже с плагином всё равно стоит проверить исходный код и sitemap вручную — это быстрее, чем потом разбирать конфликт настроек.
Когда дубли архивов и пагинации приведены в порядок, сайт обычно становится проще для обхода: поисковик получает меньше мусорных URL, а вы — более предсказуемую индексацию. Главное здесь не «закрыть побольше страниц», а оставить в индексе только те адреса, которые действительно нужны пользователю и поиску.