Дубли страниц в 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 редирект | Передаёт сигнал о переносе и убирает старый адрес из обхода |
| Параметры сортировки, фильтры, UTM | canonical на основную страницу | Если контент тот же, редирект может мешать аналитике |
| Дубли создаёт тема | Исправить шаблон и мета-теги | Лучше устранить источник, чем маскировать последствия |
Пошаговое решение: убираем дубли в 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-настройки.