Дубли архивов в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелких настроек: одинаковые записи доступны через категории и теги, авторские и датированные архивы индексируются без нужды, а пагинация создаёт десятки почти одинаковых страниц. В результате поисковик видит несколько URL с одним и тем же набором материалов и начинает тратить crawl budget на мусорные страницы.
Если у сайта уже есть статьи по категориям, тегам и архивам, задача обычно не в том, чтобы «всё закрыть», а в том, чтобы оставить полезные страницы и убрать лишние дубли без потери внутренней перелинковки и трафика.
Как понять, что проблема именно в архивах
Сначала стоит проверить, какие типы архивов реально индексируются и где есть повторяющийся контент. Не надо сразу править robots.txt: это грубый инструмент, который часто маскирует проблему, а не решает её.
Признаки дублей архивов
- в поиске есть несколько URL с одинаковыми сниппетами для одной и той же подборки записей;
- страницы тегов почти полностью повторяют категории;
- архивы автора и даты открыты, хотя на сайте один автор или даты не несут ценности;
- пагинация вида
/category/news/page/2/индексируется, но не даёт уникальной пользы; - в Search Console растёт число «Просканировано, но не проиндексировано» для архивных URL.
Что проверить в первую очередь
- Откройте несколько архивов категорий и тегов вручную и сравните заголовки, description и список записей.
- Проверьте, не доступны ли одни и те же записи через разные таксономии.
- Посмотрите исходный код: есть ли
canonical, не указывает ли он на не тот URL. - Проверьте, не индексируются ли архивы автора и даты, если они не нужны для поиска.
Диагностика через поиск и исходный код
Самый быстрый способ найти проблему — взять несколько подозрительных URL и сравнить их технические сигналы. Для архивов это особенно важно: визуально страницы могут отличаться только заголовком, а для поисковика они будут почти одинаковыми.
// Пример: быстро проверить canonical и robots meta на архивной странице в теме или плагине
add_action('wp_head', function () {
if (is_category() || is_tag() || is_author() || is_date()) {
// Здесь ничего не выводим, это только точка для отладки.
// Смотрите исходный код страницы в браузере.
}
}, 1);Если вы работаете через код, полезно временно вывести диагностическую информацию только для администора в HTML-комментарий или в лог. Но не оставляйте это в проде надолго.
add_action('wp_head', function () {
if (!current_user_can('manage_options')) {
return;
}
if (is_category() || is_tag() || is_author() || is_date()) {
global $wp_query;
echo "\n<!-- archive debug: is_category=" . (is_category() ? '1' : '0') .
", is_tag=" . (is_tag() ? '1' : '0') .
", is_author=" . (is_author() ? '1' : '0') .
", is_date=" . (is_date() ? '1' : '0') .
", posts=" . intval($wp_query->found_posts) . " -->\n";
}
}, 99);Какой подход выбрать: плагин, код или комбинация
Если задача типовая, удобнее закрывать её через SEO-плагин. Если нужна точная логика — лучше кодом. На практике часто работает комбинация: плагин управляет мета-тегами, а код отключает лишние архивы или меняет их поведение.
| Подход | Когда подходит | Минус |
|---|---|---|
| SEO-плагин | Нужно быстро поставить noindex, canonical и отключить архивы без разработки | Не всегда хватает гибкости для нестандартной структуры |
| Код в теме/плагине | Нужно точечно отключить архивы автора, даты или теги | Требует аккуратного тестирования после обновлений |
| Комбинация | Есть SEO-плагин, но часть логики нужно добрать кодом | Важно не задублировать правила в двух местах |
Если на сайте уже используется Clearfy Pro, часть задач по чистке дублей и управлению техническими страницами можно закрыть им, но логику всё равно стоит проверять вручную. Ссылка на продукт: Clearfy Pro.
Пошаговое решение: убираем дубли архивов
Шаг 1. Оставьте индексируемыми только полезные архивы
Если категории у вас — это реальные разделы сайта, их можно оставить открытыми. Теги, архивы автора и даты часто лучше закрыть от индексации или вообще отключить, если они не несут самостоятельной ценности.
add_action('template_redirect', function () {
if (is_author() || is_date()) {
wp_redirect(home_url('/'), 301);
exit;
}
});Это жёсткий вариант. Он подходит только если вы точно не используете такие архивы в SEO и навигации. Если архивы нужны посетителям, лучше не редиректить, а поставить noindex,follow через SEO-плагин или фильтр.
Шаг 2. Уберите дубли между категориями и тегами
Если один и тот же набор записей доступен и через категорию, и через тег, поисковику это не помогает. В такой ситуации обычно оставляют индексируемыми только категории, а теги переводят в noindex либо сокращают их количество.
Практический критерий простой: если тег не даёт отдельной смысловой выборки, он не должен конкурировать с категорией.
Шаг 3. Проверьте canonical на архивных страницах
На страницах пагинации canonical должен указывать на саму страницу пагинации, а не на первую страницу архива, если у вас есть содержимое на второй и последующих страницах. Иначе поисковик может игнорировать часть листинга.
Если вы используете SEO-плагин, не отключайте canonical вручную в теме без необходимости. Дублирование логики часто ломает результат: один код выводит canonical, другой его перезаписывает.
Шаг 4. Сократите индексируемые архивы в самой структуре сайта
Иногда проблема не в мета-тегах, а в самой таксономии. Например, на сайте есть десятки тегов, которые отличаются только формулировкой, но не смыслом. В таком случае лучше объединить их, чем просто закрыть от индексации.
- оставьте один основной термин вместо нескольких синонимов;
- удалите пустые и почти пустые архивы;
- проверьте, не создаёт ли плагин лишние архивы для медиа, автора или пользовательских таксономий;
- уберите ссылки на неиспользуемые архивы из меню и блоков.
Как отключить архивы автора и даты без поломки сайта
Если у сайта один автор или дата публикации не является самостоятельным поисковым интентом, архивы автора и даты часто только раздувают индекс. Но отключать их надо аккуратно: сначала проверьте, не ведут ли на них внутренние ссылки из шаблона или хлебных крошек.
add_filter('author_link', function ($link) {
return home_url('/');
});
add_filter('get_the_archive_title', function ($title) {
if (is_author() || is_date()) {
return '';
}
return $title;
});Первый фрагмент — не универсальное решение, а пример того, как можно убрать ссылку на авторский архив в отдельных шаблонах. Если архивы уже проиндексированы, после изменения логики нужен контроль редиректов и canonical.
Проверка результата после внедрения
После изменений важно не ограничиваться визуальной проверкой. Архив может выглядеть нормально, но при этом отдавать неправильный статус, canonical или robots meta.
- Откройте несколько архивов категорий, тегов, автора и даты в браузере.
- Проверьте исходный код:
title,meta name="robots",link rel="canonical". - Убедитесь, что редиректы ведут на нужные страницы и не создают цепочки.
- В Search Console отправьте на повторную проверку только те URL, которые реально меняли.
- Проверьте серверные логи или отчёт сканирования, если он доступен: количество обращений к архивам должно снижаться постепенно, а не скачком из-за ошибки.
Если вы закрывали архивы через noindex, не ждите мгновенного исчезновения из выдачи. Поисковику нужно время на переобход. Если ставили 301, убедитесь, что старый URL не возвращается в цепочку через промежуточные адреса.
Частые ошибки и как их исправить
Закрыли архив в robots.txt и забыли про canonical
Это частая ошибка. Если страница закрыта в robots.txt, поисковик может не увидеть её мета-теги и не понять, куда должен вести canonical. Для SEO-дублей обычно безопаснее noindex, чем грубый запрет сканирования.
Поставили 301 на главную для всех архивов
Так делать можно только если вы точно уверены, что архив не нужен. Иначе вы теряете полезные переходы и ломаете навигацию. Для неактуальных архивов лучше сначала удалить ссылки из интерфейса, а потом уже решать вопрос с редиректом.
Оставили теги, которые дублируют категории
Если тег повторяет категорию по смыслу, он не добавляет ценности. В этом случае либо объединяйте терминологию, либо переводите тег в noindex, либо удаляйте его и настраивайте 301 на ближайший релевантный архив.
Сломали пагинацию
Иногда после правок архивы второй и третьей страницы начинают редиректиться на первую. Это плохо: поисковик теряет доступ к части материалов. Проверяйте именно пагинированные URL, а не только первую страницу архива.
Практические советы по безопасности и производительности
Любая правка архивов должна идти через дочернюю тему или небольшой mu-plugin, а не напрямую в родительскую тему. Иначе обновление откатит изменения. Если логика сложная, выносите её в отдельный плагин со своей точкой входа.
- не правьте
functions.phpна боевом сайте без бэкапа; - проверяйте изменения на staging-копии;
- не создавайте несколько фильтров, которые меняют один и тот же canonical;
- если архивов много, следите за количеством редиректов — лишние переходы замедляют обход;
- после чистки дублей обновите sitemap, чтобы в нём не оставались ненужные URL.
Если вам нужно не только убрать дубли, но и системно почистить технические страницы, метаданные и лишние архивы, удобнее делать это в одном SEO-инструменте, а не разносить по нескольким плагинам. Но даже в этом случае финальная проверка всегда остаётся за вами: откройте URL, посмотрите код ответа, canonical и индексацию в Search Console.