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

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

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

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

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

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

Когда нужен 301, а когда canonical

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

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

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

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

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

  • откройте страницу с разными вариантами URL и сравните ответ сервера;
  • посмотрите исходный код и найдите тег <link rel="canonical">;
  • проверьте, не ведут ли старые адреса на 200 OK вместо 301;
  • сравните заголовки ответа через DevTools или curl;
  • посмотрите отчёты в Google Search Console по страницам с дублирующимся canonical.

Для быстрой проверки удобно использовать curl -I. Он покажет код ответа и заголовок Location, если редирект настроен правильно.

curl -I https://example.com/old-page/
curl -I https://example.com/old-page
curl -I https://www.example.com/page/

Если на старом адресе вы видите 200 OK вместо 301 Moved Permanently, значит поисковик может продолжать считать его отдельной страницей.

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

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

Шаг 1. Зафиксируйте основной формат URL

Определите один вариант для сайта: со слэшем или без, с www или без, HTTPS обязательно. В WordPress это должно совпадать с настройками Адрес WordPress (URL) и Адрес сайта (URL) в Настройки → Общие.

Если там уже стоят разные значения, сначала исправьте их, а потом проверьте, не сломались ли вход в админку и медиафайлы.

Шаг 2. Настройте 301 для старых адресов

Для точечных переездов удобнее всего добавить редирект в .htaccess на Apache или в конфигурацию Nginx. Это быстрее и надёжнее, чем пытаться ловить всё на уровне темы.

Пример для Apache: редирект со старого пути на новый.

Redirect 301 /old-page/ https://example.com/new-page/

Если нужно убрать www, используйте единое правило на весь сайт:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

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

Шаг 3. Проверьте canonical на шаблоне

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

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

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

Этот вариант годится только если у вас нет другого механизма canonical, который уже работает корректно. Иначе сначала отключите конфликтующий код.

Шаг 4. Уберите технические копии из индексации

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

Для страниц внутреннего поиска WordPress обычно разумнее использовать noindex, follow, а не редиректить их на главную. Редирект в таких случаях часто ухудшает поведение сайта и мешает пользователю.

Сравнение подходов: плагин, код, сервер

ПодходКогда подходитПлюсыМинусы
Плагин редиректовНужно быстро закрыть несколько старых URLУдобно без доступа к серверуДополнительная нагрузка, риск конфликтов правил
Код в теме или mu-pluginНужны точечные правила и контрольПрозрачно, можно версионироватьТребует аккуратной поддержки
.htaccess / NginxМассовые и стабильные редиректыБыстро, без участия WordPressНужен доступ к серверу

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

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

  • проверьте старые URL через curl -I и убедитесь в коде 301;
  • откройте новый адрес и посмотрите, что canonical указывает на него же;
  • проверьте, нет ли цепочки редиректов: старый URL → промежуточный URL → конечный URL;
  • в Search Console отправьте на переобход ключевые страницы после массовых правок;
  • посмотрите серверные логи: старые адреса не должны массово возвращать 200.

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

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

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

Так делают, когда старую страницу удалили и не хотят разбираться с сопоставлением. Для SEO это слабое решение: пользователь и поисковик теряют контекст. Лучше вести на наиболее близкую релевантную страницу или вернуть 410, если аналогов нет.

Цикл редиректов

Часто возникает при одновременной работе плагина, правил в .htaccess и настроек CDN. Проверяется просто: curl -I показывает несколько переходов подряд. Уберите дублирующее правило в одном из уровней.

Canonical указывает на несуществующий URL

Это бывает после смены структуры постоянных ссылок или переноса сайта. Поисковик видит противоречие: страница открывается по одному адресу, а canonical ведёт в другой. Исправляйте сначала источник ссылки, потом проверяйте шаблон и кеш.

Старые внутренние ссылки остались в контенте

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

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

Редиректы и canonical — это не только про SEO, но и про стабильность. Чем меньше лишних переходов, тем меньше нагрузка на сервер и тем проще отлаживать сайт.

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

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

Когда лучше не трогать страницу редиректом

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

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

Как удалить записи со своими пользовательскими полями в WordPress через код
12.04.2026
Обновление WordPress без проблем и сохранение данных: практическое руководство
27.02.2026
Как закрыть от индексации архивы меток в WordPress
03.09.2026
Как отключить Gutenberg и вернуть классический редактор в WordPress: пошаговое руководство
23.03.2026
Как сделать автоматический ответ на формы в WordPress: практическое руководство
16.04.2026
×
Quizle
Получите больше лидов и увеличьте продажи!
-15%

на премиум плагин WordPress

Получить скидку ⋙