Если в индексе появляются одинаковые archive-страницы, страницы пагинации и дубли архивов таксономий, проблема обычно не в «плохом SEO», а в том, как тема и WordPress собирают URL. На одном сайте это могут быть архивы категорий с параметрами, на другом — пагинация автора, на третьем — отдельные страницы тегов, которые дублируют основной архив. Исправлять это нужно точечно: сначала понять, какие URL реально индексируются, потом убрать источник дублей, а не просто закрыть всё подряд.
Как понять, что у вас именно дубли archive-страниц
Симптомы обычно видны в Search Console и в логах обхода: одна и та же сущность доступна по нескольким адресам, а поисковик выбирает не тот URL, который вы считаете основным. Чаще всего это:
- архив категории и архив тега с одинаковым набором записей;
- страницы пагинации вида
/category/news/page/2/, которые индексируются вместо первой страницы; - архивы автора на сайтах, где автор один и контент не разделяется по ролям;
- страницы с параметрами сортировки или фильтра, которые попадают в индекс вместе с базовым архивом.
Что проверить в первую очередь
Откройте проблемный архив и посмотрите, есть ли у него несколько доступных вариантов URL: со слэшем и без, с пагинацией, с параметрами, через разные таксономии. Затем проверьте исходный код страницы: canonical, robots meta, заголовок H1 и хлебные крошки. Если canonical указывает на саму страницу пагинации или на параметризованный URL, это уже повод для правки шаблона или фильтра.
// Быстрая проверка canonical на архиве в шаблоне или через временный вывод в лог
add_action('wp_head', function () {
if (is_category() || is_tag() || is_author() || is_tax()) {
error_log('Current URL: ' . home_url(add_query_arg(array(), $GLOBALS['wp']->request)));
}
});Диагностика: где именно рождается дубль
Перед исправлением важно понять источник. В WordPress дубли архивов обычно создают не плагины SEO, а тема, кастомные шаблоны и фильтры запросов. Если на сайте есть собственные таксономии, проверьте, не выводятся ли они одновременно в нескольких местах: в меню, в виджетах, в блоках «похожие материалы» и в архивных шаблонах.
Полезно сравнить три вещи: URL в индексе, canonical на странице и реальный шаблон, который отрабатывает. Если canonical правильный, но в индекс всё равно лезет дубль, значит поисковик видит страницу как самостоятельную. Если canonical неправильный, проблема на стороне темы или плагина.
| Подход | Когда подходит | Минус |
|---|---|---|
| Плагин SEO | Нужно быстро закрыть архивы от индексации | Не убирает причину дубля в шаблоне |
| Код в теме | Нужно изменить canonical, robots или шаблон архива | Требует аккуратного теста после обновлений |
| Комбинированный вариант | Есть и SEO-правила, и лишние URL в шаблоне | Нужно следить, чтобы настройки не конфликтовали |
Пошаговое решение: как убрать дубли archive и пагинации
1. Закройте от индексации служебные архивы
Если архив автора на сайте не несёт ценности, а теговые страницы дублируют категории, их можно закрыть через SEO-плагин или код. Важно не путать noindex и удаление из sitemap: если страница закрыта от индексации, но остаётся в карте сайта, поисковик всё равно будет её регулярно обходить.
add_filter('wp_robots', function ($robots) {
if (is_author() || is_tag()) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});Этот вариант подходит, если вы хотите оставить навигацию для пользователей, но не отдавать архивы в поиск. Для категорий и таксономий решение нужно принимать отдельно: иногда лучше не закрывать архив, а доработать его контент и сделать полезной посадочной страницей.
2. Исправьте canonical для страниц пагинации
На пагинации canonical должен быть логичным. Для второй и следующих страниц архива canonical обычно указывает на саму страницу пагинации, а не на первую. Но если у вас дубли создаются из-за параметров или альтернативных путей, canonical можно нормализовать до чистого адреса архива.
add_filter('get_canonical_url', function ($canonical, $post) {
if (is_archive() || is_home()) {
$paged = max(1, get_query_var('paged'));
if ($paged > 1) {
$canonical = get_pagenum_link($paged);
}
}
return $canonical;
}, 10, 2);Не используйте этот фильтр без проверки на конкретном шаблоне. Если у вас есть отдельные правила для пагинации в SEO-плагине, сначала посмотрите, не конфликтуют ли они с кодом темы.
3. Уберите лишние параметры из архивных URL
Если архивы доступны с параметрами сортировки, фильтра или трекинга, поисковик может воспринимать их как отдельные страницы. Для таких URL лучше либо не генерировать индексируемые ссылки, либо приводить их к чистому виду.
add_filter('post_type_link', function ($permalink, $post) {
return remove_query_arg(array('sort', 'filter', 'utm_source', 'utm_medium', 'utm_campaign'), $permalink);
}, 10, 2);Этот пример не решает проблему сам по себе для всех типов URL, но показывает принцип: в шаблонах и генераторах ссылок не должно быть мусорных параметров, если они не нужны для индексации.
4. Проверьте шаблоны archive.php, category.php и taxonomy.php
Иногда дубль создаётся не на уровне SEO, а потому что один и тот же контент выводится в нескольких шаблонах с одинаковыми заголовками, описаниями и блоками. В таком случае нужно либо развести семантику, либо убрать лишний шаблон. Например, если category.php и taxonomy.php выводят одинаковый текст, поисковик видит слабую разницу между страницами.
Практика простая: для каждой группы архивов задайте уникальный H1, короткое описание и, при необходимости, отдельный текстовый блок. Не копируйте один и тот же абзац в категории, теги и пользовательские таксономии.
Как проверить, что исправление сработало
После внедрения не ограничивайтесь визуальной проверкой. Нужны минимум три проверки:
- откройте проблемный URL и убедитесь, что canonical ведёт на нужный адрес;
- проверьте, что служебные архивы получили
noindexили исключены из sitemap; - посмотрите в Search Console, что новые URL не появляются как дубли в отчётах об индексировании.
Если вы меняли код, очистите кэш страницы и объектный кэш, если он есть. Иначе можно увидеть старый canonical и решить, что правка не сработала.
Мини-проверка через браузер и исходный код
// Проверка текущего типа страницы в отладке
add_action('wp_footer', function () {
if (current_user_can('manage_options')) {
echo '<!-- is_category: ' . (is_category() ? 'yes' : 'no') . ' -->';
echo '<!-- is_tag: ' . (is_tag() ? 'yes' : 'no') . ' -->';
echo '<!-- paged: ' . esc_html(get_query_var('paged')) . ' -->';
}
});Такой вывод удобно использовать на staging-сайте, чтобы быстро понять, какой шаблон и какой тип архива реально отрабатывает.
Частые ошибки и как их исправить
- Закрыли от индексации все архивы подряд. В результате пропали полезные посадочные страницы категорий. Исправление: оставьте в индексе только те архивы, которые реально помогают пользователю.
- Поменяли canonical, но не убрали дубли из sitemap. Поисковик продолжает обходить лишние URL. Исправление: синхронизируйте canonical, robots и карту сайта.
- Сделали noindex для пагинации, но оставили внутренние ссылки на неё. Это не ошибка само по себе, но может размывать обход. Исправление: проверьте, нужны ли ссылки на глубокую пагинацию в навигации.
- Смешали настройки SEO-плагина и код в теме. Получился конфликт canonical или robots. Исправление: оставьте один источник правды для каждого типа правил.
- Скопировали одинаковые тексты в разные архивы. Страницы стали почти неотличимыми. Исправление: уникализируйте заголовок, описание и цель страницы.
Что делать для безопасности и производительности
Если вы решаете проблему кодом, не вносите правки напрямую в родительскую тему. Используйте дочернюю тему или небольшой mu-plugin, чтобы изменения не потерялись после обновления. Для проверки на боевом сайте сначала включайте код на staging и только потом переносите в прод.
Ещё один практический момент: не создавайте лишние запросы в wp_head ради диагностики на постоянной основе. Логи и временные отладочные блоки должны быть удалены после проверки, иначе они будут мешать производительности и засорять HTML.
Если вам нужно быстро привести в порядок дубли, служебные архивы и мусорные URL, удобно сначала настроить правила индексации, а потом уже чистить шаблоны. В некоторых случаях помогает связка SEO-настроек и аккуратной технической чистки, например через Clearfy Pro, но только если вы понимаете, какие именно URL нужно оставить, а какие закрыть.
Главный критерий здесь простой: после правки у каждой страницы должен быть один понятный адрес, одна роль в структуре сайта и один ожидаемый способ индексации. Всё остальное — источник дублей.