wphierarchy.ru wordpress Структура шаблонов WordPress

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

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

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

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

Симптомы обычно похожи: в поиске всплывают не те URL, в Search Console растет число страниц без трафика, а в выдаче можно увидеть несколько адресов с одинаковым title и почти одинаковым сниппетом. Отдельно настораживает ситуация, когда одна и та же статья доступна по нескольким путям: через архив рубрики, через тег, через поиск по сайту или через параметры сортировки.

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

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

Если сомневаетесь, откройте проблемную страницу и посмотрите исходный код. В <head> должен быть один явный canonical. Если их несколько или он указывает не туда — это уже техническая ошибка, а не «особенность SEO».

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

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

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

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

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

Смотрите на три вещи: код ответа, Location и наличие rel=canonical в HTML. Если разные версии URL отдают 200 без редиректа, значит поисковику оставили выбор. Это почти всегда лишнее.

Что смотреть в Search Console

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

СценарийЧто делатьКомпромисс
Одинаковый контент на двух постоянных URL301 редирект на основной адресПочти всегда лучший вариант
Похожая, но не идентичная страницаcanonical на основную версиюПоисковик может проигнорировать подсказку
Параметры сортировки, UTM, фильтрыcanonical + при необходимости noindex для служебных URLНужно аккуратно, чтобы не закрыть полезные страницы

Пошаговое решение: canonical и 301 без лишних конфликтов

Логика простая: если URL больше не должен существовать как отдельная страница, ставим 301. Если страница нужна пользователю, но есть альтернативные адреса или служебные параметры, оставляем ее доступной и указываем canonical.

Шаг 1. Приведите сайт к одному базовому домену

Сначала выберите единственный вариант: https и либо www, либо без него. На уровне сервера это делается редиректом, а не через PHP. Для Apache пример выглядит так:

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [L,R=301]

На Nginx логика та же, только в конфигурации сервера. Важно не делать цепочку из двух-трех редиректов: сначала http на https, потом www на без www. Это лишняя задержка и лишний риск ошибок.

Шаг 2. Уберите дубли с параметрами

Если дубль создается параметрами, не надо редиректить все подряд. Например, ?utm_ — это служебные метки, их лучше игнорировать в canonical. А вот ?replytocom= или параметры сортировки могут требовать отдельного решения, если они плодят индексируемые URL.

Для своих шаблонов можно принудительно задать canonical в functions.php или в мини-плагине:

add_filter('wpseo_canonical', function ($canonical) {
    if (is_singular()) {
        $canonical = get_permalink();
    }

    return $canonical;
});

Этот пример уместен только если у вас уже используется Yoast SEO. Если плагина нет, не нужно вставлять этот код «на всякий случай». Лучше работать через штатный rel=canonical темы или SEO-плагина, который уже отвечает за мета-теги.

Шаг 3. Настройте 301 для старых и лишних URL

Если у страницы есть новый адрес, старый должен отдавать 301. Для WordPress это можно сделать через template_redirect, если редирект зависит от логики сайта, а не от простого совпадения URL:

add_action('template_redirect', function () {
    if (is_page('old-page')) {
        wp_redirect(home_url('/new-page/'), 301);
        exit;
    }
});

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

Шаг 4. Проверьте архивы, пагинацию и служебные страницы

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

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

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

Проверка должна быть не «страница открывается», а технической.

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

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

curl -I https://example.com/old-page/
curl -I https://example.com/new-page/
curl -s https://example.com/new-page/ | grep -i canonical

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

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

Ставят canonical на страницу, которая сама редиректит

Это лишняя путаница. Если URL должен исчезнуть, canonical ему не нужен — нужен 301. Canonical имеет смысл только для доступной страницы.

Редиректят все параметры подряд

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

Делают несколько редиректов подряд

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

Оставляют дубли в sitemap

Если в карту сайта попадают старые или альтернативные URL, поисковик будет тратить обход на мусор. Проверьте, что в sitemap только канонические адреса.

Надеются, что canonical «все исправит»

Canonical — это подсказка, а не жесткая команда. Если дубли реально одинаковые и доступны по нескольким адресам, надежнее закрыть вопрос редиректом или убрать генерацию лишнего URL на уровне темы/плагина.

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

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

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

И последнее: после правок обязательно сделайте резервную копию конфигурации сервера, базы и текущих правил редиректов. Ошибка в одном шаблоне или одном regex может увести на 301 половину сайта.

×
-15%
на премиум-тему
Reboot

Создай сайт мечты
на WordPress!

Купить со скидкой »