Как закрыть дубли страниц в WordPress: robots, noindex и canonical без поломки индексации

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

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

Что именно считать дублем в WordPress

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

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

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

Начинайте не с кода, а с проверки индексации. В Google Search Console откройте отчёт по страницам и посмотрите, какие URL попали в индекс неожиданно. Затем сравните это с картой сайта и с реальной структурой сайта. Если в индексе есть страницы поиска, теги без трафика или параметры сортировки, это уже повод чистить.

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

  • открываются ли архивы тегов и авторов как полноценные страницы;
  • есть ли у страниц поиска мета-тег robots с noindex;
  • не создаёт ли тема или плагин отдельные URL для одной и той же записи;
  • не индексируются ли параметры вроде ?orderby=, ?filter=, ?replytocom=;
  • совпадает ли canonical на странице с основным URL;
  • нет ли в sitemap лишних типов страниц.

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

Пошаговое решение: что закрывать, а что оставлять

Удобнее идти по слоям. Сначала убираем из индекса то, что не должно ранжироваться вообще. Потом настраиваем canonical для страниц, где нужен доступ пользователю, но не нужен отдельный индексируемый адрес. И только после этого трогаем карту сайта.

1. Закройте технические и служебные страницы

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

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

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

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

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

add_filter('get_canonical_url', function ($canonical, $post) {
    if (is_singular() && !empty($_GET)) {
        return get_permalink($post);
    }

    return $canonical;
}, 10, 2);

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

3. Уберите лишние архивы из индекса

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

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

Сравнение подходов: плагин, код или ручная настройка

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

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

Когда robots.txt помогает, а когда мешает

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

Через robots.txt имеет смысл ограничивать только явно технические пути, которые не несут ценности и не должны тянуть краулинг. Например, служебные запросы или отдельные каталоги, если вы точно понимаете последствия. Для большинства дублей безопаснее работать через мета-тег robots и canonical.

Проверка результата после внедрения

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

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

Полезно проверить и ответ сервера. Для этого достаточно обычного curl:

curl -I https://example.com/?s=test
curl -I https://example.com/sample-post/?replytocom=1

Если страница должна быть закрыта, смотрите не только заголовки, но и HTML-вывод. Иногда плагин ставит canonical, но тема переопределяет его в шаблоне, и в итоге поисковик получает противоречивые сигналы.

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

Ставят noindex на страницу, которую нужно ранжировать

Такое часто случается с рубриками. Владелец сайта видит «дубли» и закрывает всё подряд, а потом теряет трафик по нормальным архивам. Перед закрытием проверьте, есть ли у страницы поисковый спрос, входящие ссылки и уникальная ценность.

Закрывают URL в robots.txt и ждут исчезновения из индекса

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

Оставляют в sitemap всё подряд

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

Не проверяют canonical после обновления темы

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

Практические советы по безопасности и производительности

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

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

Минимальный чек-лист перед выкладкой:

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

Если после правок дубли всё ещё остаются, обычно проблема не в robots, а в структуре сайта: один и тот же контент доступен через несколько шаблонов, фильтров или таксономий. В таком случае нужно уже не «закрывать лишнее», а пересматривать архитектуру URL и шаблоны вывода.

Как закрыть дубли страниц в WordPress: robots, noindex и canonical без поломки индексации
28.08.2026