Как найти и убрать дубли страниц в WordPress через canonical и 301 редирект

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

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

Когда проблема действительно в дублях, а не в индексации

Сначала стоит убедиться, что вы боретесь именно с дублями, а не с другой SEO-проблемой. Если страница не индексируется вообще, причина может быть в noindex, robots.txt, ошибке ответа сервера или в том, что URL не попал в sitemap. Если же в индексе есть несколько почти одинаковых адресов, тогда уже имеет смысл смотреть на каноникал, редиректы и структуру ссылок.

Типичные признаки дублей

  • одна и та же статья открывается с ?amp, ?replytocom, UTM-параметрами или другими query string;
  • страница доступна и со слешем, и без слеша, если сервер или плагин настроены нестабильно;
  • архивы тегов, авторов и дат повторяют друг друга по смыслу;
  • один и тот же материал доступен через несколько таксономий или пользовательских архивов;
  • в Search Console видны разные URL с одинаковым title и почти одинаковым сниппетом.

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

Откройте проблемный URL в браузере и посмотрите исходный код страницы. В <head> должен быть один явный canonical, указывающий на основную версию. Затем проверьте ответ сервера для альтернативных URL: они должны либо редиректить на основной адрес, либо отдавать страницу с правильным canonical, если редирект неуместен.

curl -I https://example.com/page/?utm_source=test

Если ответ 200 и canonical указывает на саму параметризованную версию, это уже повод исправлять шаблон или правила редиректа.

Какой способ выбрать: canonical, 301 или настройка шаблона

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

СитуацияЧто делатьКомментарий
Старый URL заменён новым301 редиректПередаёт сигнал о переносе и убирает старый адрес из обхода
Параметры сортировки, фильтры, UTMcanonical на основную страницуЕсли контент тот же, редирект может мешать аналитике
Дубли создаёт темаИсправить шаблон и мета-тегиЛучше устранить источник, чем маскировать последствия

Пошаговое решение: убираем дубли в WordPress

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

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

add_filter('get_canonical_url', function ($canonical, $post) {
    if (is_admin() || ! $canonical) {
        return $canonical;
    }

    if (! empty($_GET) && is_singular()) {
        return get_permalink($post);
    }

    return $canonical;
}, 10, 2);

Этот код лучше размещать в дочерней теме или в небольшом mu-plugin, а не в functions.php основной темы, если сайт активно обновляется.

2. Сделайте 301 для старых и лишних адресов

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

add_action('template_redirect', function () {
    $request_uri = $_SERVER['REQUEST_URI'] ?? '';

    if (strpos($request_uri, '/old-page/') !== false) {
        wp_redirect(home_url('/new-page/'), 301);
        exit;
    }
});

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

3. Уберите источники дублей в таксономиях и архивах

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

Для этого проверьте:

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

4. Проверьте, как формируются ссылки внутри темы

Иногда проблема не в индексации, а в том, что тема генерирует ссылки на неканонические адреса. Например, где-то используется home_url() вместо get_permalink(), а где-то вручную собирается URL без учёта настроек постоянных ссылок. Это приводит к тому, что внутренние ссылки указывают на разные версии одной страницы.

echo esc_url( get_permalink( get_the_ID() ) );

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

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

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

  • Проверьте, что старый URL отдаёт 301, а не 200.
  • Убедитесь, что в исходном коде страницы canonical указывает на основную версию.
  • Откройте страницу с параметром и без параметра — содержимое должно быть одинаковым, а канонический адрес один.
  • Посмотрите отчёты Search Console по страницам-дублям и исключённым URL.

Для быстрой проверки ответа сервера удобно использовать curl -I, а для проверки canonical — просмотр исходного кода или инструменты разработчика в браузере. Если у вас есть доступ к логам, можно дополнительно посмотреть, как поисковые роботы ходят по старым адресам после редиректа.

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

Редирект на главную вместо релевантной страницы

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

Canonical и 301 указывают в разные стороны

Если canonical ведёт на одну страницу, а редирект — на другую, поисковик получает противоречивые сигналы. Сначала определите единственный основной URL, потом настройте редирект и canonical на него.

Плагин SEO перезаписывает ваши правила

Некоторые плагины сами формируют canonical и могут игнорировать кастомный код. В таком случае не нужно дублировать логику в двух местах. Либо настраивайте плагин, либо отключайте его конкретный блок, если это предусмотрено документацией.

Параметры фильтров закрыли редиректом

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

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

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

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

Короткий чек-лист перед публикацией правок

  • основной URL определён и не меняется в разных местах сайта;
  • старые адреса получают 301 на актуальные страницы;
  • параметризованные URL не становятся отдельными дублями в индексе;
  • canonical на всех шаблонах указывает на правильную версию;
  • внутренние ссылки ведут на канонический адрес;
  • в Search Console нет новых массовых ошибок после обновления.

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

Как добавить динамический контент в блоки Gutenberg в WordPress
04.03.2026
Оптимизация базы данных WordPress: ударное решение для ускорения сайта
04.01.2026
Как удалить ненужные meta-теги в WordPress для оптимизации сайта
04.12.2025
Как автоматизировать создание резервных копий в WordPress
05.02.2026
Как использовать хуки для оптимизации WordPress
09.12.2025