Как закрыть дубли страниц в WordPress через robots.txt, noindex и canonical

Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелких настроек: архивы тегов, страницы автора, пагинация, параметры сортировки, версии с ?amp, ?replytocom, UTM-метки, а иногда и одинаковые записи в разных рубриках. На сайте это быстро превращается в размывание индекса и лишнюю нагрузку на обход.

Если задача не в том, чтобы «запретить всё подряд», а в том, чтобы оставить в индексе только полезные URL, лучше идти по схеме: сначала найти тип дубля, потом выбрать правильный способ обработки — noindex, canonical или закрытие в robots.txt.

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

В реальных проектах чаще всего всплывают такие сценарии:

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

Не все из них нужно закрывать одинаково. Например, canonical полезен там, где есть основная версия страницы и технические варианты. А noindex уместен для страниц, которые не должны участвовать в поиске, но должны оставаться доступными пользователю и краулеру. robots.txt — это уже про экономию обхода, а не про гарантированное исключение из индекса.

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

Сначала стоит посмотреть, какие URL уже попали в индекс и как они выглядят в поиске. Для этого удобно использовать:

  • Google Search Console — отчеты по страницам и исключенным URL;
  • site:example.com в поиске для быстрой проверки;
  • логи краулера вроде Screaming Frog или Sitebulb;
  • поиск по шаблонам URL на самом сайте: /tag/, /author/, ?replytocom=, ?amp.

Если вы видите, что одна и та же статья доступна по нескольким адресам, проверьте:

  1. какой URL отдает 200 OK;
  2. есть ли на альтернативных версиях корректный rel="canonical";
  3. не закрыт ли важный URL в robots.txt раньше времени;
  4. не конфликтуют ли SEO-плагины и тема.

Быстрая проверка через консоль

Если нужен быстрый технический осмотр, можно проверить заголовки ответа и canonical через curl:

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

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

Что выбрать: noindex, canonical или robots.txt

Здесь часто ошибаются. Закрыть URL в robots.txt и считать задачу решенной — плохая идея, если страница уже в индексе. Поисковик может сохранить URL без контента, но сам адрес останется в выдаче.

СпособКогда использоватьПлюсОграничение
noindexСтраница не нужна в поиске, но доступна пользователюПрямой сигнал поисковикуНужно, чтобы страница была доступна для обхода
canonicalЕсть основная версия и технические копииСохраняет полезную версиюНе всегда игнорируется, если контент реально разный
robots.txtНужно снизить обход технических URLЭкономит crawl budgetНе гарантирует удаление из индекса

Практически это выглядит так: архивы тегов и авторов чаще закрывают через noindex, follow; параметры сортировки и служебные URL — через canonical на чистую версию или через правила в robots.txt, если они не должны обходиться вообще; дубли записей — через 301-редирект на основной адрес.

Пошаговое решение для WordPress

1. Закройте неценные архивы через SEO-плагин или код

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

Если нужно сделать это кодом, можно добавить noindex для архивов автора и поиска. Пример для functions.php дочерней темы или собственного мини-плагина:

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

Такой вариант работает на уровне стандартного API WordPress и не зависит от конкретного SEO-плагина. Но если плагин уже управляет robots-мета, проверьте, не перетирает ли он этот вывод.

2. Уберите дубли с параметрами через canonical

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

Проверка простая: откройте страницу с параметром и убедитесь, что canonical ведет на основной URL без лишних параметров. Если нет, ищите в теме вызовы rel_canonical() и дублирующие SEO-блоки.

3. Закройте технические URL в robots.txt только там, где это оправдано

В robots.txt имеет смысл ограничивать обход служебных адресов, которые не должны сканироваться массово. Но не закрывайте им то, что уже нужно убрать из индекса. Пример аккуратного файла:

User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /?s=
Disallow: /*?replytocom=

Sitemap: https://example.com/sitemap_index.xml

Обратите внимание: правила с параметрами работают не во всех случаях одинаково у разных поисковиков. Поэтому после правки обязательно проверяйте реальное поведение в Search Console, а не только сам файл.

4. Уберите лишние архивы из шаблона, если они не нужны

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

add_action('template_redirect', function () {
    if (is_author()) {
        wp_redirect(home_url('/'), 301);
        exit;
    }
});

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

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

После внедрения не ограничивайтесь просмотром HTML. Нужна проверка в трех слоях:

  • HTML — есть ли нужный canonical и noindex;
  • HTTP — нет ли лишних редиректов и ошибок 4xx/5xx;
  • индексация — исчезают ли технические URL из отчета поисковика со временем.

Практический чек-лист:

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

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

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

Это ожидаемо. Если URL уже известен поисковику, одного Disallow недостаточно. Нужно либо вернуть доступ и поставить noindex, либо отдать 301 на канонический адрес, либо удалить страницу физически, если она больше не нужна.

Поставили noindex на страницу, но она не исчезает

Причины обычно две: страница давно в индексе и поисковику нужно время, либо на ней стоит конфликтующий canonical на другой URL, который тоже не помогает. Проверьте, что страница доступна для обхода и не закрыта одновременно в robots.txt.

Canonical указывает на неправильную версию

Это часто бывает после установки нескольких SEO-плагинов или при кастомной теме, где в head выводится свой canonical. Ищите дублирующий код в шаблонах header.php, в функциях темы и в плагинах, которые вмешиваются в мета-теги.

Слишком агрессивно закрыли архивы

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

Что делать для безопасности и производительности

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

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

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

В итоге рабочая схема простая: сначала находите тип дубля, потом выбираете один корректный способ обработки, затем проверяете HTML, HTTP и индекс. Если на каждом шаге не смешивать noindex, canonical и robots.txt, WordPress перестает плодить технический шум и становится заметно проще в сопровождении.

Как закрыть дубли страниц в WordPress через robots.txt, noindex и canonical
30.09.2026

Подборка полезных материалов о том, как скрыть админку вордпресс и удалить следы использования WP