Дубли в WordPress редко появляются из-за одной причины. Обычно это набор мелких вещей: архивы категорий и тегов, страницы автора, пагинация, версии с параметрами в URL, одинаковые записи в нескольких рубриках, а иногда и шаблон темы, который выводит один и тот же контент в разных местах. Если просто закрыть всё от индексации, можно потерять полезные страницы. Если ничего не делать — поисковик сам выберет каноническую версию, но не всегда ту, которая нужна вам.
Как понять, что у вас именно проблема с дублями
Сначала не трогайте настройки. Сначала проверьте, какие URL реально существуют и чем они отличаются. В WordPress дубли чаще всего видны в индексе как страницы с одинаковым заголовком, но разными адресами:
- одна и та же запись открывается через архив рубрики и через архив тега;
- страницы пагинации индексируются как самостоятельные;
- URL с параметрами сортировки, UTM или фильтрами попадают в индекс;
- у записей есть версии с
/amp/,?replytocom=или другими служебными параметрами; - страницы автора и архивы дат дублируют контент блога.
Проверка начинается с поиска в Google Search Console и обычного site:-запроса. Но этого недостаточно. Откройте несколько подозрительных URL и сравните:
- тег
<title>; - canonical;
- robots meta;
- HTTP-статус;
- что именно выводится в основном контенте.
Если canonical указывает на один адрес, а в индексе сидят другие версии, значит поисковик видит альтернативные URL как отдельные страницы. Это уже не косметика, а техническая проблема.
Быстрая диагностика через браузер и консоль
Для проверки canonical и статуса не нужен отдельный плагин. Достаточно посмотреть HTML и заголовки ответа:
curl -I https://example.com/sample-post/curl -s https://example.com/sample-post/ | grep -i canonicalЕсли у вас есть доступ к серверу, полезно посмотреть, не создают ли дубли параметры в URL. Например, один и тот же контент может открываться по адресам с ?utm_source=, ?replytocom= или ?amp. Для поисковика это разные URL, если не настроены canonical и редиректы.
Что именно нужно исправить в WordPress
Универсального переключателя нет. Обычно приходится собрать решение из нескольких частей: убрать лишние архивы из индекса, настроить canonical, закрыть служебные параметры, а иногда — сделать 301-редирект на основную версию страницы.
| Подход | Когда подходит | Минус |
|---|---|---|
| Плагин SEO/чистки | Нужно быстро закрыть архивы, теги, автора, пагинацию и параметры | Меньше контроля, важно не переборщить с запретами |
| Код в теме или mu-plugin | Нужна точечная логика для конкретных URL и параметров | Требует тестирования после обновлений |
| Редиректы на сервере | Есть явные дубли с одинаковым контентом | Можно случайно сломать нужные страницы, если правило слишком широкое |
Если задача типовая, удобнее начать с плагина уровня Clearfy Pro: он закрывает часть технических дублей, чистит лишние элементы и помогает не разносить настройки по теме. Но даже с плагином стоит понимать, что именно вы отключаете. Автоматически закрывать всё подряд — плохая идея.
1. Закройте лишние архивы от индексации
Если у сайта нет смысла в индексации архивов авторов, дат или тегов, их лучше убрать из поиска. Делать это можно через SEO-плагин или через код. В коде логика обычно выглядит так:
add_filter('wp_robots', function ($robots) {
if (is_author() || is_date() || is_tag()) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});Этот вариант не удаляет страницу, а только просит поисковик не индексировать её. Для части архивов это нормальная практика, если они не несут самостоятельной ценности.
2. Настройте canonical на страницах с параметрами
Если на сайте есть фильтры, сортировка или служебные параметры, canonical должен указывать на чистый URL. В WordPress это часто делает SEO-плагин, но иногда нужно поправить вручную. Например, если страница открывается с параметром ?replytocom=, а canonical ведёт на базовый URL, это уже лучше, чем отдельная индексируемая копия.
Для точечной обработки можно использовать фильтр wpseo_canonical в Yoast SEO или аналогичный механизм в другом SEO-плагине. Но если вы не уверены, что плагин реально отдает нужный canonical, проверьте исходный код страницы после сохранения.
3. Уберите дубли через 301-редирект
Если есть две версии одного и того же URL, а одна из них явно лишняя, лучше не надеяться на canonical, а сделать редирект. Пример: переход с URL с параметром на чистый адрес.
add_action('template_redirect', function () {
if (is_admin()) {
return;
}
if (isset($_GET['replytocom']) && !empty($_SERVER['REQUEST_URI'])) {
$url = remove_query_arg('replytocom');
wp_safe_redirect($url, 301);
exit;
}
});Такой код уместен только для конкретного кейса. Не стоит бездумно редиректить все параметры: часть из них может быть нужна для аналитики, авторизации или работы фронтенда.
Пошаговое решение без лишнего риска
- Соберите список дублей из Search Console и из выдачи
site:. - Проверьте canonical и robots на каждой группе URL.
- Определите, что должно остаться в индексе: запись, рубрика, тег, архив автора или только одна версия страницы.
- Закройте лишнее через
noindex, а не через удаление страницы, если она нужна пользователям. - Для явных дублей поставьте 301-редирект на основную версию.
- После изменений переобойдите страницы через Search Console и проверьте заголовки ответа.
Если вы работаете с темой или кастомным плагином, удобнее вынести логику в отдельный mu-plugin. Тогда она не пропадет при смене темы и не смешается с шаблонами.
<?php
/**
* Plugin Name: WP Duplicate Cleanup
*/
add_filter('wp_robots', function ($robots) {
if (is_tag() && !is_admin()) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});Это не готовое универсальное решение, а рабочий каркас. Перед внедрением проверьте, какие архивы у вас реально нужны для SEO. На новостном или контентном сайте теги могут быть полезны, а на небольшом корпоративном блоге — только плодить мусор.
Как проверить, что решение сработало
Проверка должна быть не на глаз, а по фактам. После внедрения откройте проблемный URL и убедитесь в следующем:
- canonical указывает на нужную страницу;
- страница с параметром больше не отдает отдельную индексируемую версию;
- в HTML есть
noindexтам, где вы его включали; - редирект действительно 301, а не 302;
- основная страница открывается без цепочки редиректов.
Полезно проверить и серверный ответ:
curl -I https://example.com/old-url/В ответе должен быть 301 Moved Permanently, если вы настраивали редирект. Если там 200 OK, значит правило не сработало или было перекрыто другим правилом в .htaccess, nginx-конфиге или плагине редиректов.
Через несколько дней посмотрите Search Console: количество дублей в отчете может снижаться не сразу. Это нормально. Поисковику нужно время, чтобы переобойти страницы и переоценить сигналы.
Частые ошибки и как их исправить
Закрыли от индексации всё подряд
Частая ошибка — поставить noindex на все архивы, включая те, которые реально приводят трафик. Если у вас сильные рубрики, не убивайте их без анализа. Сначала сравните посещаемость и видимость, потом принимайте решение.
Поставили canonical, но оставили доступными десятки дублей
Canonical — это подсказка, а не жесткий запрет. Если у вас есть явные дубли, лучше комбинировать canonical с редиректом или закрытием параметров. Иначе поисковик может долго выбирать между версиями.
Сделали редирект по слишком широкому условию
Например, правило убирает все URL с вопросительным знаком. В результате ломаются формы, фильтры, поиск по сайту или служебные переходы. Редирект должен быть точечным: только для конкретного параметра и конкретного сценария.
Не проверили тему и плагины после обновления
Некоторые темы и SEO-плагины сами меняют canonical, robots и структуру архивов. После обновления проверьте, не вернулись ли старые дубли. Особенно это важно, если часть логики была в functions.php, а не в отдельном плагине.
Что учесть по безопасности и производительности
Техническая чистка дублей обычно не нагружает сайт, но ошибки в редиректах и фильтрах могут создать лишние запросы и циклы. Поэтому:
- не добавляйте тяжелую логику в
template_redirectбез необходимости; - не проверяйте на каждом запросе сложные регулярные выражения, если можно решить задачу на уровне сервера;
- не редактируйте ядро WordPress — используйте тему, mu-plugin или настройки плагина;
- после изменений очистите кеш страницы и кеш CDN, если он есть;
- проверьте мобильную версию отдельно, если тема отдает разные шаблоны для разных устройств.
Если вам нужен более широкий набор технической чистки — от дублей и лишних архивов до мелких SEO-правок — удобно смотреть в сторону инструментов вроде Clearfy Pro: он не заменяет разработку, но закрывает часть рутинных задач без ручного копания в шаблонах. Главное — не включать всё подряд, а проверять каждую настройку на конкретном сайте.
В итоге рабочая схема простая: сначала находите источник дубля, потом выбираете между noindex, canonical и 301, после этого проверяете ответ сервера и индексацию. Если сделать это в таком порядке, шанс сломать сайт заметно ниже, чем при попытке «почистить SEO» одной галочкой в админке.