Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелочей: одинаковые записи доступны по нескольким URL, архивы индексируются вместе с основным контентом, а параметры в адресе создают новые версии страниц. В итоге поисковик видит несколько почти одинаковых документов и начинает выбирать не тот URL, который нужен вам.
Ниже разберём рабочий сценарий: как быстро найти источник дублей, что именно править в WordPress и как проверить, что после изменений сайт не потерял нужные страницы из индекса.
Как понять, что проблема именно в дублях
Сначала стоит отличить дубли от обычной просадки трафика. Если в Search Console растёт число страниц, а в индексе появляются странные варианты URL, причина часто именно в технических копиях. Типичные признаки:
- одна и та же статья открывается с
/category/и без него; - страницы доступны с
?replytocom=,?utm_или другими параметрами; - архивы тегов, авторов и дат индексируются вместе с основными материалами;
- главная страница сайта доступна и по
http, и поhttps, или сwwwи без него; - в выдаче встречаются версии с
/page/2/, которые не должны конкурировать с основной страницей.
Что проверить в первую очередь
Откройте несколько подозрительных URL вручную и сравните:
- код ответа сервера;
- наличие редиректа на канонический адрес;
- значение тега
rel="canonical"; - мета-тег robots;
- одинаковый ли контент на разных адресах.
Если у вас есть доступ к консоли, полезно быстро посмотреть заголовки:
curl -I https://example.com/sample-post/Ищите 301 на правильный адрес, а не цепочку из нескольких переходов. Если страница отвечает 200 на двух разных URL, это уже кандидат на дубль.
Откуда дубли берутся в WordPress
В WordPress проблема часто возникает на уровне настроек темы, плагинов и структуры ссылок. Самые частые источники:
- несколько таксономий с одинаковым контентом;
- архивы тегов, авторов и дат без необходимости;
- страницы пагинации, которые индексируются как отдельные документы;
- параметры сортировки и фильтрации;
- страницы вложений медиафайлов;
- дубли из-за неправильного canonical в теме или SEO-плагине.
Если сайт давно работает, дубли нередко появляются после смены темы или установки нового SEO-плагина. В таких случаях старые правила редиректов и новые настройки начинают конфликтовать друг с другом.
Пошаговое решение: что делать на практике
1. Зафиксируйте канонический формат URL
Сначала выберите один вариант адреса и придерживайтесь его везде: со слэшем на конце или без него, с www или без, только https. В WordPress это задаётся в Настройки → Общие, но этого недостаточно: редиректы должны работать на уровне сервера или плагина.
Если сайт на Apache, базовый редирект можно сделать так:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [L,R=301]
</IfModule>Для Nginx логика та же, но конфиг будет другим. Важно не смешивать несколько решений сразу: если редирект уже делает сервер, не дублируйте его в плагине.
2. Закройте лишние архивы от индексации
Если авторские, датированные или теговые архивы не несут самостоятельной ценности, их лучше не тащить в индекс. Это можно сделать через SEO-плагин или кодом. Кодом — только если вы понимаете, что именно отключаете.
add_action('wp_head', function () {
if (is_tag() || is_date() || is_author()) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
});Этот вариант рабочий, но в реальном проекте лучше использовать настройки SEO-плагина: так проще управлять исключениями без правки темы. Если архивы нужны для навигации, оставляйте follow, чтобы поисковик мог переходить по ссылкам внутри сайта.
3. Уберите страницы вложений и пустые медиа-URL
Страницы вложений часто создают тонкие дубли: отдельная страница с картинкой почти не содержит полезного контента. Обычно их нужно либо редиректить на файл, либо на родительскую запись. В WordPress это можно сделать фильтром:
add_action('template_redirect', function () {
if (is_attachment()) {
$parent = get_post_field('post_parent', get_the_ID());
if ($parent) {
wp_redirect(get_permalink($parent), 301);
} else {
wp_redirect(home_url('/'), 301);
}
exit;
}
});Если у вас уже есть плагин для SEO, проверьте, не делает ли он это сам. Двойной редирект — частая ошибка.
4. Настройте canonical для страниц с параметрами
Параметры в URL — нормальная история для аналитики, фильтров и поиска по сайту. Проблема начинается, когда такие адреса попадают в индекс как отдельные страницы. Для большинства случаев canonical должен указывать на чистый URL без параметров.
Если нужно вручную поправить canonical в шаблоне, делайте это аккуратно и только для конкретных типов страниц:
add_filter('wpseo_canonical', function ($canonical) {
if (!empty($_GET['utm_source']) || !empty($_GET['replytocom'])) {
return remove_query_arg(array('utm_source', 'utm_medium', 'utm_campaign', 'replytocom'));
}
return $canonical;
});Этот пример относится к Yoast SEO. Если у вас другой плагин, фильтр будет отличаться. Суть одна: canonical должен указывать на основную версию страницы, а не на рекламный или служебный параметр.
Сравнение подходов: плагин, код или сервер
| Подход | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| SEO-плагин | Нужно быстро закрыть архивы, задать canonical, управлять noindex | Удобно, меньше риска сломать шаблон | Зависит от настроек и логики плагина |
| Код в теме или mu-plugin | Нужна точечная логика для конкретных URL | Гибко, не требует лишних плагинов | Нужно тестировать после обновлений |
| Редиректы на сервере | Нужно привести домен и URL к одному стандарту | Быстро и надёжно на уровне инфраструктуры | Требует доступа к конфигу сервера |
Как проверить, что решение сработало
После правок не ограничивайтесь визуальной проверкой. Нужна техническая верификация:
- откройте старый URL и убедитесь, что он отдаёт
301на правильный адрес; - проверьте исходный код страницы и найдите актуальный
rel="canonical"; - посмотрите, не остались ли в индексе URL с параметрами;
- сравните количество страниц в Search Console до и после изменений;
- проверьте, не появились ли циклические редиректы.
Для быстрой проверки canonical можно использовать просмотр исходного кода или команду:
curl -s https://example.com/sample-post/ | grep -i canonicalЕсли страница с параметром всё ещё открывается как отдельный документ и canonical не меняется, значит правило не сработало или его перезаписывает другой плагин.
Частые ошибки и как их исправить
Два плагина одновременно управляют SEO
Например, один плагин ставит canonical, а другой добавляет noindex или меняет robots. В результате поисковик получает противоречивые сигналы. Решение простое: оставьте один источник SEO-логики, остальные функции отключите.
Редирект сделан через 302 вместо 301
Временный редирект не передаёт сигнал о постоянном переезде. Для дублей нужен именно 301, иначе старые URL могут дольше жить в индексе.
Canonical указывает на URL с параметрами
Это частая ошибка на страницах фильтров, поиска и UTM-меток. Canonical должен вести на чистую основную версию, иначе дубль не исчезает.
Закрыли архивы, но забыли про внутренние ссылки
Если в меню, хлебных крошках или блоках темы остались ссылки на старые адреса, поисковик продолжит их обходить. После правок проверьте шаблоны, виджеты и контент.
Безопасность и производительность: что не стоит делать
Не ставьте редиректы и SEO-правки в несколько мест сразу: .htaccess, functions.php, SEO-плагин и плагин редиректов. Потом невозможно понять, кто именно ломает маршрут. Лучше выбрать один слой для каждого типа задачи.
Если правите кодом, вынесите его в mu-plugin или отдельный мини-плагин, а не в активную тему. Так изменения не исчезнут при обновлении шаблона.
И ещё один практический момент: не закрывайте от индексации всё подряд. Иногда архивы тегов или авторов реально полезны, если они собирают тематический трафик. Сначала проверьте, есть ли у них поисковый спрос и уникальная ценность, и только потом отключайте.
Если нужен более широкий аудит дублей, лишних архивов и технических мета-тегов, удобно использовать инструменты вроде Clearfy Pro: он помогает быстро убрать типовые источники дублей и мусорных страниц без ручной правки каждого шаблона. Но даже в этом случае базовую проверку редиректов и canonical лучше делать вручную.
Мини-чек-лист перед публикацией правок
- выбран один основной формат домена и URL;
- старые адреса отдают
301на новые; - страницы вложений не создают отдельные посадочные;
- архивы, которые не нужны в поиске, закрыты корректно;
- canonical указывает на чистый URL;
- внутренние ссылки не ведут на устаревшие версии страниц;
- после изменений проверены заголовки ответа и исходный код.
Когда эти пункты закрыты, дубли обычно перестают разрастаться, а поисковику становится проще выбрать правильную версию страницы. Главное — не лечить всё одной настройкой и не смешивать редиректы, canonical и noindex без понимания, какой сигнал вы хотите отправить.