Дубли в WordPress редко появляются «сами по себе»: чаще их создают пагинация, архивы, параметры в URL, версии с и без слеша, страницы вложений, теги, категории и фильтры плагинов. Проблема в том, что поисковик видит несколько адресов с одинаковым или почти одинаковым содержимым и начинает размывать сигналы. В итоге в индексе остаются не те URL, которые вы хотели бы продвигать.
Ниже разберём, как быстро диагностировать источник дублей, чем отличаются варианты решения и как убрать лишние адреса так, чтобы не сломать сайт и не потерять нужные страницы.
Как понять, что на сайте есть дубли
Симптомы обычно заметны в Search Console и в логах обхода: одна и та же страница индексируется по нескольким адресам, в отчётах растёт число «Просканировано, но не проиндексировано», а в выдаче всплывают URL с параметрами, архивы автора или вложения изображений вместо основной страницы.
Что проверить в первую очередь
- одинаковый контент доступен по
/page/2/,?amp,?replytocom,?utm_...; - страница открывается и по HTTP, и по HTTPS;
- есть версии с
wwwи безwww; - архивы тегов и категорий дублируют друг друга по тексту и спискам записей;
- страницы вложений изображений индексируются отдельно;
- плагин SEO или кэш отдаёт разные
canonicalдля одной и той же страницы.
Если у вас есть доступ к серверу, полезно быстро посмотреть, какие адреса реально отдают одинаковый HTML. Для этого достаточно сравнить заголовки и канонические ссылки.
curl -I https://example.com/sample-page/
curl -I https://example.com/sample-page/?utm_source=test
curl -I https://example.com/sample-page/page/2/Если ответы отличаются только параметрами в URL, а контент одинаковый, это уже кандидат на каноникализацию или редирект.
Какие дубли WordPress встречаются чаще всего
Не все дубли нужно удалять одинаково. Одни лучше закрыть от индексации, другие — склеить редиректом, третьи — оставить, но явно указать поисковику основной адрес.
| Сценарий | Что делать | Компромисс |
|---|---|---|
| UTM и служебные параметры | Оставить одну каноническую версию, при необходимости убрать из индекса | Параметры могут остаться в аналитике |
| HTTP/HTTPS, www/non-www | Сделать 301 на единственный вариант | Нужна проверка сертификата и настроек сервера |
| Страницы вложений | Редирект на файл или родительскую запись | Потеря отдельной страницы вложения |
| Архивы тегов и авторов | Закрыть от индексации или доработать контент | Меньше страниц в индексе, но чище структура |
Пошаговое решение: от диагностики к исправлению
Шаг 1. Выберите одну основную версию сайта
Сначала определите, какой вариант URL будет главным: с HTTPS, с www или без него, со слешем или без него. Это базовая точка, от которой строятся все остальные правила. Если на сайте уже есть внешние ссылки и индекс, не меняйте структуру без необходимости.
На уровне сервера настройте 301-редирект с альтернативных версий на основную. Это лучше, чем пытаться лечить всё только в WordPress.
# Пример для Apache (.htaccess): редирект на HTTPS и без www
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]Для Nginx логика будет другой, но принцип тот же: одна страница — один адрес.
Шаг 2. Проверьте canonical на страницах и архивах
WordPress и SEO-плагины обычно выводят rel="canonical". Это не заменяет редирект, но помогает поисковику понять, какой URL считать основным. Если canonical указывает на саму страницу, а не на параметрическую копию, это уже хороший знак.
Если нужно задать canonical вручную для нестандартной страницы, можно использовать фильтр wpseo_canonical в Yoast SEO или аналогичный механизм в вашем SEO-плагине. Но не делайте это без причины: ручной canonical легко сломать, если он конфликтует с редиректами.
add_filter( 'wpseo_canonical', function( $canonical ) {
if ( is_page( 'landing' ) ) {
return home_url( '/landing/' );
}
return $canonical;
} );Если Yoast не используется, можно вывести canonical через wp_head, но только для точечных кейсов, когда вы точно понимаете, что делаете.
Шаг 3. Уберите страницы вложений
В WordPress каждая картинка может иметь отдельную страницу вложения. На небольших сайтах это часто лишний слой дублей, который не даёт пользы. Безопасный вариант — редиректить attachment page на сам файл или на родительскую запись, если она есть.
add_action( 'template_redirect', function () {
if ( is_attachment() ) {
$parent = wp_get_post_parent_id( get_queried_object_id() );
if ( $parent ) {
wp_redirect( get_permalink( $parent ), 301 );
} else {
wp_redirect( wp_get_attachment_url( get_queried_object_id() ), 301 );
}
exit;
}
} );Такой код лучше добавлять в мини-плагин или в functions.php дочерней темы. Перед включением проверьте, нет ли у вас отдельной SEO-логики для медиа.
Шаг 4. Закройте архивы и параметры, которые не должны индексироваться
Теги, авторские архивы, результаты поиска и страницы с параметрами фильтрации часто создают много похожих URL. Если они не нужны для SEO, их лучше закрыть от индексации через мета-robots или настройки SEO-плагина.
Для служебных параметров, которые не должны создавать отдельные страницы, можно использовать noindex на уровне шаблона или SEO-плагина. Но не путайте это с редиректом: noindex не склеивает URL, он только просит не индексировать страницу.
Когда нужен редирект, а когда достаточно canonical
Это ключевой вопрос. Если у вас два URL, которые должны вести к одному и тому же месту навсегда, используйте 301-редирект. Если страница нужна пользователю, но есть её техническая копия, оставьте canonical. Например, для пагинации архивов canonical обычно остаётся на саму страницу, а не на первую страницу архива — здесь нужно смотреть на конкретную структуру сайта.
Упрощённо:
- 301 — когда старый адрес больше не нужен;
- canonical — когда копия нужна, но не должна конкурировать с основной страницей;
- noindex — когда страница может существовать для пользователя, но не должна попадать в индекс.
Проверка результата после внедрения
После правок не ограничивайтесь открытием страницы в браузере. Проверьте, что сервер отдаёт правильный код ответа, canonical указывает на нужный URL, а в цепочке редиректов нет лишних шагов.
- откройте исходный код страницы и найдите
rel="canonical"; - проверьте ответ
curl -Iдля старого и нового URL; - посмотрите, нет ли цепочки
301 → 301 → 200вместо прямого перехода; - в Search Console отправьте на переобход ключевые страницы;
- сравните список проиндексированных URL через 1–2 обхода, а не сразу после правок.
Пример проверки заголовков:
curl -I https://example.com/old-page/
curl -I https://example.com/new-page/Если старый URL всё ещё отдаёт 200, значит редирект не сработал или его перебивает правило плагина, кэша или сервера.
Частые ошибки и как их исправить
Редирект настроен в WordPress, но сервер отдаёт другую версию
Так бывает, если на уровне Nginx или Apache уже есть свои правила. В этом случае WordPress-редирект может срабатывать слишком поздно или не срабатывать вообще. Решение — проверить конфигурацию сервера и убрать конфликтующие правила.
Canonical указывает на URL с параметрами
Это часто происходит из-за плагинов фильтрации, UTM-меток или неправильной логики шаблона. Исправление простое: canonical должен вести на чистый основной адрес, без служебных параметров.
Закрыли архивы от индексации, но забыли про внутренние ссылки
Если на закрытую страницу ведут десятки внутренних ссылок, поисковик всё равно будет тратить на неё обход. Лучше не только ставить noindex, но и пересмотреть структуру ссылок в меню, блоках и хлебных крошках.
Удалили страницу без редиректа
Это классическая ошибка. Если у удалённой страницы были входящие ссылки или трафик, она должна вести на релевантный аналог. Иначе вы получите 404 и потерю накопленных сигналов.
Практические советы по безопасности и производительности
Любые правки редиректов и canonical лучше сначала проверять на staging-копии. Если сайт большой, не вносите десятки правил сразу: так проще найти источник ошибки, если что-то сломается.
Ещё один полезный момент — не перегружать сайт лишними SEO-надстройками. Если у вас уже есть плагин, который умеет управлять дублями, canonical, архивами и чисткой служебных страниц, это часто удобнее, чем собирать всё из разрозненных сниппетов. Например, в Clearfy Pro есть инструменты для отключения дублей и технической чистки сайта: https://wpshop.ru/plugins/clearfy?utm_source=wpmarketing.ru&utm_medium=article&utm_campaign=kak-najti-i-ubrat-dubli-stranic-v-wordpress-bez-poteri-indeksacii
Но даже с плагином не стоит отключать всё подряд. Сначала определите, какие URL реально мешают индексации, а какие нужны для навигации и внутренней перелинковки.
Мини-чек-лист перед публикацией правок
- выбрана одна основная версия домена;
- на старых URL стоит 301, а не 302;
- canonical указывает на чистый основной адрес;
- страницы вложений не индексируются или редиректятся;
- служебные параметры не создают отдельные индексируемые страницы;
- внутренние ссылки ведут на канонические URL;
- после правок проверены заголовки ответа и исходный код.
Если после внедрения дублей стало меньше в отчётах Search Console, а в выдаче начали появляться нужные URL без параметров и лишних архивов, значит решение работает. Если же индекс по-прежнему расползается, ищите источник в шаблонах темы, SEO-плагине, фильтрах URL или настройках кэша.