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

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

Ниже — рабочая схема, как понять, что именно дублируется, и чем закрывать каждый тип URL: noindex, canonical или robots.txt. Без универсальных рецептов, потому что в WordPress они часто вредят.

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

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

Типовые источники дублей

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

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

Начните не с правок, а с проверки фактов. В Search Console откройте отчёт по страницам и посмотрите, какие URL попали в индекс как дубли или альтернативные страницы. Затем проверьте сайт краулером: Screaming Frog, Sitebulb или аналогом. Важно увидеть не только наличие дублей, но и то, как они связаны между собой через canonical и мета-robots.

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

Мини-чек-лист диагностики

  • проверить, есть ли у страниц корректный rel="canonical";
  • сравнить title и h1 у дублей и основной страницы;
  • посмотреть, не закрыт ли важный контент случайно через noindex;
  • проверить, не запрещён ли нужный URL в robots.txt;
  • убедиться, что редирект с альтернативных версий домена работает один раз, без цепочек.

Что использовать: noindex, canonical или robots.txt

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

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

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

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

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

Если у вас есть SEO-плагин, проще всего отключить индексацию тегов, архивов авторов или дат в его настройках. Но если нужен точечный контроль, можно сделать это кодом. Ниже пример для functions.php или мини-плагина:

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

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

2. Добавьте canonical на страницы с параметрами

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

add_action('wp_head', function () {
    if (is_singular()) {
        $canonical = get_permalink();
        echo '<link rel="canonical" href="' . esc_url($canonical) . '" />' . "\n";
    }
}, 5);

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

3. Ограничьте обход мусорных URL в robots.txt

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

User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /?replytocom=
Disallow: /*?s=
Disallow: /*?orderby=
Disallow: /*?filter=
Sitemap: https://example.com/sitemap_index.xml

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

4. Уберите дубли страниц вложений

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

Если используете плагин для оптимизации, проверьте, не создаёт ли он собственные редиректы для attachment pages. Два слоя редиректов часто приводят к цепочкам и лишней нагрузке.

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

Иногда достаточно убрать самые шумные URL. Например, ?replytocom и страницы вложений. Для этого можно использовать редирект на уровне template_redirect:

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

    if (is_attachment()) {
        $parent = wp_get_post_parent_id(get_the_ID());
        if ($parent) {
            wp_safe_redirect(get_permalink($parent), 301);
            exit;
        }
    }
});

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

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

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

  • откройте страницу через «Просмотр кода» и найдите один canonical;
  • убедитесь, что у закрытых архивов есть noindex,follow;
  • проверьте редиректы командой curl -I https://example.com/old-url;
  • посмотрите в Search Console, ушли ли альтернативные URL из отчёта по индексированию;
  • прогоните сайт краулером и убедитесь, что мусорные параметры не создают новые URL.

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

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

Закрыли в robots.txt, но URL остался в индексе

Это ожидаемо: запрет на обход не равен удалению из индекса. Если URL уже известен поисковику, нужен noindex или редирект на основную страницу.

Поставили canonical на главную для всех страниц

Так делать не стоит. Canonical должен указывать на эквивалентную или основную версию конкретной страницы, а не на случайный URL. Иначе поисковик просто проигнорирует подсказку.

Случайно закрыли важные архивы

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

Получили дубли из-за плагина SEO и ручного кода

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

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

Чем меньше лишних URL генерирует сайт, тем проще ему жить и тем меньше нагрузка на сервер. Это особенно заметно на больших проектах с архивами, фильтрами и комментариями.

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

Если нужен более прикладной набор настроек для чистки дублей и технической оптимизации, можно посмотреть Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже с плагином полезно понимать, какие URL вы закрываете и почему — иначе легко спрятать проблему, а не решить её.

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

Как убрать дубли страниц в WordPress: noindex, canonical и robots.txt без лишних блокировок
16.09.2026
Как исправить 404 на сайте WordPress после смены постоянных ссылок
20.09.2026