Дубли архивов в WordPress обычно появляются незаметно: одна и та же подборка записей доступна по нескольким URL из-за тегов, категорий, авторских архивов, пагинации, параметров сортировки или страниц вложений. Для пользователя это почти не видно, а для поисковика получается несколько адресов с одинаковым или очень похожим содержимым. В итоге распыляется вес, в индексе копятся лишние страницы, а в отчётах Search Console появляются странные URL, которые не должны ранжироваться.
Ниже разберём, как быстро понять, что проблема именно в дублях архивов, какие варианты исправления подходят в WordPress и как проверить, что после правок поисковик видит только нужные страницы.
Как понять, что у вас именно дубли архивов
Сначала стоит отделить настоящие дубли от просто похожих страниц. В WordPress архивы часто отличаются только заголовком и набором записей, но по смыслу остаются одной и той же страницей для индексации. Типичные признаки:
- одни и те же записи доступны через категорию, тег и автора;
- архивы с пагинацией индексируются как отдельные страницы без необходимости;
- страницы вложений медиафайлов открываются отдельно и дублируют контент записи;
- URL с параметрами сортировки, фильтра или UTM попадают в индекс;
- в поиске всплывают пустые или почти пустые архивы тегов.
Быстрая диагностика
Проверьте несколько вещей вручную и через инструменты. В браузере откройте разные архивы и сравните HTML-код заголовка, canonical и robots meta. В Search Console посмотрите разделы с проиндексированными страницами и исключёнными URL. Если сайт большой, полезно выгрузить список URL из краулера и сгруппировать их по шаблону.
Для первичной проверки достаточно такого подхода: если у двух страниц одинаковый canonical, но разный URL и одинаковый набор записей, это уже кандидат на склейку или закрытие от индексации.
Что именно нужно исправить в WordPress
Универсального решения нет: часть архивов лучше закрыть от индексации, часть — склеить canonical, а часть — удалить через 301 редирект. Логика простая: если страница не несёт самостоятельной ценности, не держите её в индексе.
| Сценарий | Что делать | Компромисс |
|---|---|---|
| Пустые или слабые теги | noindex, follow или удаление таксономии | Теги перестанут собирать трафик, если он был |
| Архивы автора на контентном сайте | noindex или canonical на основную страницу автора | Профиль автора может хуже ранжироваться |
| Страницы вложений | редирект на файл или запись | Потеря отдельной страницы вложения |
| URL с параметрами | canonical на чистый URL, при необходимости блокировка в robots.txt | Не все параметры можно безопасно закрыть robots.txt |
Пошаговое решение без лишних плагинов
1. Закрываем слабые архивы от индексации
Если у вас есть архивы тегов или авторов, которые не нужны в поиске, добавьте для них noindex, follow. Это не удаляет страницу из сайта, но сигнализирует поисковику не держать её в индексе.
add_action('wp_head', function () {
if (is_tag() || is_author()) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
});Этот вариант годится, если тема или SEO-плагин не дают удобной настройки. Но если у вас уже есть Yoast SEO, Rank Math или аналог, лучше использовать штатные настройки, а не дублировать логику в коде.
2. Склеиваем страницы вложений
Отдельные страницы attachment часто создают мусор в индексе. Если медиафайл не должен ранжироваться отдельно, безопаснее отправлять такие URL на родительскую запись или на сам файл.
add_action('template_redirect', function () {
if (is_attachment()) {
$parent = get_post_field('post_parent', get_queried_object_id());
if ($parent) {
wp_redirect(get_permalink($parent), 301);
exit;
}
wp_redirect(home_url('/'), 301);
exit;
}
});Перед включением проверьте, не используются ли attachment-страницы в старых ссылках из поиска или внешних сайтов. Если используются, редирект обязателен, а не просто удаление шаблона.
3. Убираем дубли от параметров в URL
Параметры сортировки, фильтрации и трекинга часто создают десятки адресов с одинаковым контентом. Для таких страниц обычно нужен canonical на чистую версию URL. Если параметры генерируются плагином, сначала посмотрите, есть ли у него штатная настройка canonical.
add_filter('wp_get_canonical_url', function ($canonical, $post) {
if (is_admin() || ! $canonical) {
return $canonical;
}
$canonical = remove_query_arg(array('utm_source', 'utm_medium', 'utm_campaign', 'sort', 'filter'), $canonical);
return $canonical;
}, 10, 2);Здесь важно не переборщить: не все query-параметры можно бездумно вырезать. Если параметр влияет на содержимое страницы, canonical должен указывать на наиболее логичную основную версию, а не просто на главную.
4. Приводим архивы категорий к нормальной структуре
Если у вас есть дубли из-за нескольких таксономий, проверьте, не дублируют ли категории теги по смыслу. Частая ошибка — создавать и категорию, и тег с одинаковым названием, а потом ожидать, что поисковик сам разберётся. В таких случаях лучше оставить одну основную таксономию, а вторую закрыть от индексации или удалить.
Если вы работаете с кастомной темой, проверьте шаблоны archive.php, tag.php, author.php и attachment.php. Иногда проблема не в SEO-настройках, а в том, что шаблон выводит одинаковый контент для разных типов архивов.
Когда нужен редирект, а когда достаточно noindex
Редирект нужен там, где старый URL больше не должен существовать как отдельная сущность. Это касается страниц вложений, старых дублей категорий, переехавших архивов и устаревших URL после перестройки структуры сайта. Noindex подходит для страниц, которые должны работать для пользователей, но не нужны в поиске.
Если сомневаетесь, задайте себе два вопроса: есть ли у страницы самостоятельная ценность и есть ли внешние ссылки на неё. Если ценности нет, а ссылки есть, чаще нужен 301. Если ценность есть, но индексировать её не нужно, используйте noindex.
Проверка результата после внедрения
После правок не ограничивайтесь визуальной проверкой. Откройте несколько проблемных URL и проверьте:
- какой canonical отдается в HTML;
- есть ли meta robots с
noindex; - не возвращает ли URL 200 там, где должен быть 301;
- не остались ли страницы в sitemap.xml;
- не появляются ли новые дубли после очистки кеша.
Удобно проверить заголовки через curl:
curl -I https://example.com/attachment-page/
curl -s https://example.com/some-archive/ | grep -i canonicalЕсли у вас включён кеш, обязательно очистите его после изменений. Иначе можно увидеть старый canonical или старый robots meta и решить, что код не сработал.
Частые ошибки и как их исправить
Закрыли архив в robots.txt и забыли про canonical
Это частая ошибка. Если страница уже проиндексирована, запрет в robots.txt не уберёт её из индекса быстро и предсказуемо. Для уже существующих дублей обычно нужен noindex или редирект.
Поставили noindex на всё подряд
Иногда закрывают и полезные категории, и страницы пагинации, и авторские архивы, не проверив трафик. В результате сайт теряет видимость там, где архивы реально приводили переходы. Сначала смотрите данные аналитики и Search Console, потом меняйте правила.
Редиректят attachment на главную
Это плохой дефолт. Если у вложения есть родительская запись, логичнее вести на неё. Главная страница — слишком грубая замена, особенно если файл был встроен в конкретную статью.
Оставляют дубли в sitemap
Даже если canonical и noindex настроены правильно, лишние URL в sitemap мешают поисковику быстрее понять структуру сайта. Проверьте, что в карту сайта не попадают архивы, которые вы закрыли от индексации.
Что сделать для безопасности и производительности
Если вы решаете проблему кодом, держите изменения в дочерней теме или в небольшом mu-plugin, а не в файлах основной темы. Так обновление не сотрёт правки. Перед выкладкой на боевой сайт проверьте код на staging-окружении и убедитесь, что нет циклических редиректов.
Если нужен более прикладной инструмент для SEO-чистки и удаления дублей, можно посмотреть в сторону Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже с плагином полезно понимать, какие архивы вы закрываете и почему — иначе легко спрятать от индексации нужные страницы вместе с мусором.
Хорошая практика — после любых изменений прогнать сайт краулером и сравнить количество индексируемых архивов до и после. Если число дублей не уменьшилось, значит, где-то остался второй путь к тому же контенту: старый шаблон, параметр в URL, attachment-страница или лишний архив таксономии.