Как найти и убрать дубли страниц в WordPress: noindex, canonical и лишние архивы

Если в Search Console растут страницы-дубли, а в индексе всплывают теги, авторы, вложения и служебные архивы, проблема обычно не в «плохом SEO», а в структуре WordPress. Система по умолчанию умеет публиковать слишком много одинаковых или почти одинаковых URL: архивы дат, авторов, вложений, страниц пагинации, параметров сортировки и поиска. Для небольшого сайта это выглядит безобидно, но на практике размывает сигналы и мешает поисковику выбрать основную страницу.

Ниже — рабочая схема: сначала находим источник дублей, потом решаем, что закрывать от индексации, что склеивать через canonical, а что лучше вообще убрать из генерации.

Какие дубли WordPress создает чаще всего

В типовой установке WordPress дубли появляются не только из-за контента, но и из-за шаблонной логики. Один и тот же материал может быть доступен через несколько адресов: запись, архив рубрики, архив автора, архив даты, страницы пагинации и иногда через вложение медиафайла. Если тема или плагин добавляют свои фильтры, сортировки и параметры, количество вариантов URL быстро растет.

Что стоит проверить в первую очередь

  • архивы авторов, если на сайте один автор или авторские страницы не несут пользы;
  • архивы дат, если вы не ведете новостной или хронологический проект;
  • страницы вложений медиафайлов;
  • страницы поиска по сайту;
  • пагинацию архивов, если она индексируется без необходимости;
  • URL с параметрами сортировки, фильтров и UTM, если они попадают в индекс;
  • дубли из-за http/https, www/без www и слэша на конце.

Диагностика проблемы: где искать дубли

Начинать лучше не с правок, а с проверки того, что именно уже индексируется. Самый быстрый путь — посмотреть отчеты Search Console, затем пройтись по сайту краулером или хотя бы вручную проверить шаблонные URL. Важно не гадать, а увидеть конкретные адреса, которые поисковик считает отдельными страницами.

Что смотреть в Search Console

Откройте отчеты по страницам и исключенным URL. Ищите признаки вроде «другая страница с каноническим тегом», «просканировано, но не проиндексировано», «дубликат, Google выбрал другой канонический URL». Если таких сообщений много, это уже не единичный случай, а системная проблема структуры.

Быстрая ручная проверка

Проверьте несколько типовых адресов:

https://site.ru/?s=тест
https://site.ru/author/admin/
https://site.ru/2024/01/
https://site.ru/sample-post/attachment/image-name/
https://site.ru/category/news/page/2/

Если эти страницы отдают полноценный контент и индексируются без ограничений, поисковик получает лишние варианты одной и той же структуры.

Что закрывать, а что оставлять: короткая логика выбора

Не все дубли нужно запрещать одинаково. Иногда достаточно canonical, иногда лучше noindex, а иногда разумнее убрать сам источник генерации. Например, архивы рубрик обычно полезны, а архивы дат на большинстве сайтов — нет. Страницы поиска почти всегда бесполезны для индексации. Вложения медиа часто создают пустые страницы, которые только засоряют индекс.

Вариант Когда подходит Минус
noindex, follow для архивов, которые нужны пользователю, но не должны индексироваться страница остается в обходе, но не участвует в поиске
canonical для страниц с параметрами, пагинацией и близкими дублями не решает проблему, если у дубля есть отдельный полезный контент
отключение генерации для архивов автора, дат, вложений, если они не нужны нужно аккуратно проверить тему и ссылки

Пошаговое решение через код и настройки

Если нужен контролируемый вариант без лишних плагинов, часть дублей можно убрать кодом. Для этого удобно использовать дочернюю тему или небольшой mu-plugin. Ниже — безопасные примеры, которые не ломают основной контент.

1. Отключить архивы дат и авторов, если они не нужны

Если сайт ведет один автор или архивы дат не несут ценности, их лучше отключить на уровне шаблонной логики и редиректа. Для этого можно использовать template_redirect и отправлять 404 на ненужные архивы. Такой подход честнее, чем оставлять пустую страницу и надеяться на robots.txt.

add_action( 'template_redirect', function () {
    if ( is_author() || is_date() ) {
        global $wp_query;
        $wp_query->set_404();
        status_header( 404 );
        nocache_headers();
        include get_query_template( '404' );
        exit;
    }
} );

Если архивы нужны для навигации, но не для индексации, вместо 404 лучше оставить страницу доступной и добавить noindex через SEO-плагин или через wp_head.

2. Добавить noindex для поиска и вложений

Страницы поиска и attachment-страницы редко должны попадать в индекс. Для них обычно достаточно мета-тега robots. Если у вас уже стоит SEO-плагин, проверьте, не делает ли он это сам. Если нет — можно добавить точечно.

add_action( 'wp_head', function () {
    if ( is_search() || is_attachment() ) {
        echo '<meta name="robots" content="noindex,follow" />' . "\n";
    }
} );

Этот вариант работает только для фронтенда. Если тема или плагин уже выводят другой robots-мета тег, не дублируйте его. Сначала проверьте исходный код страницы.

3. Настроить canonical для страниц с параметрами

Если на сайте есть фильтры, сортировки или UTM-параметры, canonical должен указывать на чистую основную версию URL. В WordPress это часто делает SEO-плагин, но если у вас кастомная логика, canonical можно задать вручную через wp_head.

add_action( 'wp_head', function () {
    if ( is_search() ) {
        return;
    }

    if ( ! empty( $_GET ) ) {
        $canonical = home_url( add_query_arg( array(), $GLOBALS['wp']->request ) );
        echo '<link rel="canonical" href="' . esc_url( $canonical ) . '" />' . "\n";
    }
} );

На практике такой код нужно применять осторожно: он не должен конфликтовать с уже существующим canonical от SEO-плагина. Если плагин есть, лучше настраивать canonical в нем, а не дублировать логику в теме.

Когда лучше использовать плагин, а когда код

Если задача типовая, плагин экономит время и снижает риск ошибки. Если же проблема точечная и связана с конкретной темой или кастомным типом записей, код дает больше контроля. Например, в Clearfy Pro есть инструменты для чистки лишних архивов, дублей и служебных страниц; это удобно, когда нужно быстро привести базовую структуру в порядок без ручной сборки набора правил. Но даже в этом случае полезно понимать, что именно отключено и почему.

Если выбираете между подходами, ориентируйтесь на объем изменений:

  • одна-две проблемы — проще решить кодом;
  • много служебных страниц и дублей — удобнее использовать плагин с понятными настройками;
  • сложная тема с кастомными архивами — сначала тест на staging, потом правка шаблонов.

Как проверить, что решение сработало

После изменений не ограничивайтесь визуальной проверкой. Нужно убедиться, что поисковик видит нужные сигналы, а ненужные URL либо закрыты, либо склеены с основной страницей.

Проверка в браузере и исходном коде

  • откройте проблемный URL и посмотрите, есть ли meta robots;
  • проверьте наличие одного canonical, а не нескольких;
  • убедитесь, что на страницах поиска и вложений нет индексации;
  • проверьте код ответа: для отключенных архивов должен быть 404 или 410, если вы именно их убирали.

Проверка через Search Console

После переобхода страниц смотрите, уменьшается ли число дублей и служебных URL в отчете об индексировании. Изменения не всегда видны сразу: поисковику нужно время, чтобы пересканировать страницы и обновить статус. Если canonical игнорируется, значит где-то есть конфликт — чаще всего между темой, SEO-плагином и ручной разметкой.

Частые ошибки и как их исправить

Большая часть проблем возникает не из-за самого noindex или canonical, а из-за неправильного применения. Ниже — типовые ошибки, которые я вижу чаще всего.

Дублируется canonical

Причина обычно в том, что canonical выводит и тема, и SEO-плагин. В исходнике страницы должен быть один канонический URL. Если их два, поисковик может проигнорировать оба. Решение: оставьте только один источник canonical.

Закрыли страницу robots.txt, но она уже в индексе

robots.txt не удаляет URL из индекса сам по себе. Если страница уже известна поисковику, лучше использовать noindex или отдать 404/410, если страница действительно не нужна. Для старых дублей robots.txt — слабый инструмент.

Поставили noindex на полезный архив

Иногда закрывают рубрики, которые реально помогают навигации и собирают внутреннюю перелинковку. В этом случае вы теряете полезную посадочную страницу. Сначала оцените, есть ли у архива уникальный текст, список материалов и трафик из поиска.

Удалили архивы автора, но забыли про ссылки в теме

Если тема выводит ссылки на автора в карточках и хлебных крошках, а архив автора теперь 404, это не катастрофа, но лучше проверить, не ломается ли UX. Иногда достаточно оставить архив, но закрыть его от индексации.

Чек-лист перед публикацией изменений

  • проверить, какие URL реально индексируются;
  • убедиться, что canonical выводится один раз;
  • не закрывать в noindex страницы, которые нужны для навигации;
  • не использовать robots.txt вместо noindex для уже известных дублей;
  • проверить 404/410 для отключенных архивов;
  • сделать изменения на staging, если тема кастомная;
  • после правок запросить переобход в Search Console.

Безопасность и производительность

Чистка дублей полезна не только для индексации. Чем меньше лишних архивов и страниц поиска, тем меньше бесполезных обходов и тем проще поддерживать шаблоны. Но не стоит превращать это в массовое удаление всего подряд. Сначала определите, какие URL реально создают шум, и только потом отключайте их.

Если используете код, держите его в дочерней теме или в отдельном mu-plugin, а не в основном шаблоне. Так изменения не потеряются после обновления. И обязательно проверяйте, как ведет себя сайт после обновления SEO-плагина или темы: иногда разработчики меняют вывод canonical, robots или архивов, и старые ручные правки начинают конфликтовать.

В итоге рабочая схема простая: найти источник дублей, оставить полезные архивы, закрыть служебные страницы, не дублировать canonical и проверить результат по исходнику страницы и отчетам Search Console. Это скучная работа, но именно она обычно дает самый предсказуемый эффект на технически запущенном WordPress-сайте.

Как использовать REST API в WordPress для создания приложений
12.09.2026
Как создать динамические формы регистрации в WordPress с помощью AJAX
20.09.2026
Создать динамические шорткоды в WordPress с поддержкой параметров
03.10.2026
Как избежать проблем с кешированием в WordPress: практические советы и решения
21.09.2026
Как избежать конфликтов между плагинами в WordPress: практические советы и примеры кода
29.09.2026