Как закрыть дубли страниц от индексации в WordPress

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

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

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

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

  • архивы тегов и рубрик, если они дублируют смысл записей;
  • страницы автора на небольшом сайте, где один автор и почти нет уникального контента;
  • страницы поиска по сайту, которые не должны попадать в индекс;
  • пагинация архивов, если она создаёт много слабых страниц;
  • URL с параметрами вроде ?replytocom=, ?utm_, фильтров и сортировок;
  • версии одной и той же записи с разными каноническими адресами из-за темы или плагина;
  • страницы вложений медиафайлов, если они индексируются отдельно от контента.

Если сайт небольшой, иногда достаточно закрыть только самые шумные типы страниц. На крупном проекте лучше сначала собрать список URL из Search Console, логов сервера и краулера вроде Screaming Frog или Sitebulb.

Диагностика: где искать источник дублей

Самая частая ошибка — закрывать всё подряд через noindex, не понимая, что именно создаёт дубли. Это может ухудшить внутреннюю структуру сайта и убрать из поиска полезные страницы. Начните с проверки трёх вещей: канонического URL, мета-роботов и фактической доступности страниц.

Проверьте, как WordPress отдаёт канонический адрес

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

Для быстрой проверки можно использовать команду:

curl -I https://example.com/sample-page/

И отдельно посмотреть HTML:

curl -s https://example.com/sample-page/ | grep -i canonical

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

Сравните, какие типы страниц реально нужны в индексе

Не все архивы стоит закрывать. Например, рубрики иногда дают полезный трафик и помогают структуре сайта. А вот страницы поиска по сайту, служебные архивы и вложения часто только засоряют индекс. Для каждого типа страниц задайте простой вопрос: есть ли у него самостоятельная ценность для пользователя и поисковика?

ПодходКогда подходитМинус
Плагин SEO/очисткиНужно быстро закрыть типовые архивы и параметрыМеньше контроля над точечной логикой
Код в теме или mu-pluginНужна точная настройка под конкретный сайтТребует тестирования после обновлений
Только robots.txtНужно ограничить обход, а не индексациюНе решает проблему дублей в индексе полностью

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

Пошаговое решение: как закрыть дубли без лишнего риска

Шаг 1. Закройте служебные страницы от индексации

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

Если вы делаете это кодом, можно использовать фильтр wp_robots для точечных условий:

add_filter( 'wp_robots', function( $robots ) {
    if ( is_search() || is_author() || is_attachment() ) {
        $robots['noindex'] = true;
        $robots['follow']   = true;
    }

    return $robots;
} );

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

Шаг 2. Уберите дубли из параметров URL

Параметры в адресе часто создают десятки почти одинаковых страниц. Типичный пример — ?replytocom= в комментариях, UTM-метки, фильтры сортировки и внутренние параметры плагинов. Для поисковика это разные URL, даже если контент одинаковый.

Если параметр не нужен для индексации, лучше решить вопрос на уровне каноникал и редиректов. Для UTM-меток обычно не делают редирект, чтобы не ломать аналитику, а для технических параметров можно настроить 301 на чистый URL. Пример для replytocom в functions.php или отдельном mu-plugin:

add_action( 'template_redirect', function() {
    if ( isset( $_GET['replytocom'] ) ) {
        $url = remove_query_arg( 'replytocom' );
        wp_safe_redirect( $url, 301 );
        exit;
    }
} );

Перед внедрением проверьте, что такой редирект не ломает функциональность комментариев на вашем сайте. На некоторых конфигурациях лучше ограничиться каноническим URL и noindex, а не редиректом.

Шаг 3. Настройте канонический URL для архивов и записей

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

Проверьте, что:

  • у записей нет дублей с /index.php/, если это не задумано;
  • архивы не открываются с разными слэшами и без них одновременно;
  • страницы пагинации имеют предсказуемую структуру;
  • внутренние ссылки ведут на один и тот же адрес.

Если нужно принудительно задать канонический URL в шаблоне, используйте стандартный фильтр WordPress:

add_filter( 'get_canonical_url', function( $canonical, $post ) {
    if ( $post instanceof WP_Post && 'post' === $post->post_type ) {
        return get_permalink( $post );
    }

    return $canonical;
}, 10, 2 );

Это не универсальная панацея, но полезный способ вернуть контроль, если тема подменяет адреса или выводит нестандартные шаблоны архивов.

Шаг 4. Сократите индексируемые архивы

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

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

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

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

  • Откройте проблемный URL и проверьте мета-тег robots в исходном коде.
  • Убедитесь, что канонический URL указывает на нужную страницу.
  • Проверьте HTTP-статус: для редиректов должен быть 301, а не 302.
  • Прогоните сайт краулером и посмотрите, не осталось ли дублей с параметрами.
  • В Google Search Console отправьте страницу на повторную проверку и отслеживайте, исчез ли дубль из отчётов.

Для быстрой локальной проверки можно использовать такой пример:

curl -I https://example.com/?replytocom=12
curl -s https://example.com/sample-page/ | grep -i robots
curl -s https://example.com/sample-page/ | grep -i canonical

Если редирект настроен правильно, первый запрос должен вести на чистый URL. Если вы используете noindex, убедитесь, что он действительно присутствует в HTML, а не только в настройках плагина.

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

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

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

Поставили noindex на нужные страницы вместе с дублями

Такое часто случается, когда правила слишком широкие: например, закрыли все архивы, включая полезные рубрики. Проверяйте условия в коде и настройки плагина по типам страниц, а не по общему признаку «архив».

Сделали 301-редирект на главную вместо чистого URL

Это плохая практика для дублей записей и параметров. Редирект должен вести на соответствующую основную страницу, а не на главную, иначе вы теряете релевантность и создаёте лишние цепочки.

Переусердствовали с nofollow

Если закрыть служебные страницы и одновременно убрать follow, можно ухудшить передачу веса по внутренним ссылкам. В большинстве случаев достаточно noindex, follow или редиректа, если дубль технический.

Безопасность и производительность: что учесть до и после изменений

Любые правки в functions.php лучше выносить в отдельный mu-plugin или в дочернюю тему. Так вы не потеряете изменения после обновления темы. Перед внедрением сделайте резервную копию и проверьте изменения на staging-копии, особенно если сайт уже получает трафик из поиска.

Если вы используете несколько плагинов для SEO, кэширования и редиректов, проверьте, кто именно отвечает за каноникал и robots. Дублирующие правила часто создают конфликт: один плагин пишет noindex, другой перезаписывает заголовок, третий добавляет редирект. В результате страница может вести себя непредсказуемо.

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

Если после изменений в Search Console всё ещё появляются дубли, проверьте не только HTML, но и карту сайта, внутренние ссылки и старые URL в кеше поисковика. Иногда проблема не в настройке noindex, а в том, что сайт продолжает активно ссылаться на старые адреса.

Как закрыть дубли страниц от индексации в WordPress
02.09.2026