Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелочей: архивы тегов и рубрик, страницы автора, пагинация, параметры в URL, версии с www и без, HTTP и HTTPS, а иногда — из-за темы или плагина, который генерирует отдельные URL для одного и того же контента. Если это не привести в порядок, поисковик начинает индексировать лишние адреса, а сигналы ранжирования размазываются.
Ниже — рабочий сценарий: как сначала найти источник дублей, потом убрать их без риска потерять нужные страницы из индекса.
Как понять, что проблема именно в дублях
Симптомы обычно видны в Google Search Console и в логах обхода. На практике стоит смотреть не на один признак, а на связку:
- в индексе есть URL с параметрами, хотя контент на них не отличается;
- одна и та же страница открывается по нескольким адресам;
- в отчёте по страницам много вариантов с пометкой «Другая страница с каноническим тегом»;
- в выдаче встречаются и рубрики, и теги, и архивы автора с одинаковыми сниппетами;
- после публикации новых материалов поисковик долго выбирает не тот URL как основной.
Быстрая диагностика вручную
Проверьте несколько типовых адресов одного материала:
/post-name//post-name/?utm_source=testhttp://example.com/post-name/https://www.example.com/post-name/
Если все варианты отдают контент без редиректа на один канонический адрес, это уже источник дублей. Отдельно проверьте архивы: рубрики, теги, автора, даты, поиск по сайту, страницы пагинации.
Что именно нужно убрать, а что оставить
Не все похожие URL — это ошибка. Например, пагинация рубрики может быть нужна, а вот страницы тегов с пустым или почти пустым содержимым часто только шумят. Поэтому сначала разделите URL на три группы:
| Тип URL | Что делать | Когда оставлять |
|---|---|---|
| Дубли одного и того же материала | Склеить редиректом и canonical | Практически никогда не оставлять |
| Архивы таксономий | Оставить, закрыть от индексации или доработать контент | Если архив реально полезен пользователю |
| Параметры сортировки, UTM, фильтры | Каноникал на чистый URL, иногда редирект | Если параметр нужен для функциональности |
Если задача — именно техническая чистка, а не SEO-редизайн структуры, лучше идти по пути минимальных изменений: сначала редиректы и canonical, потом уже решать, какие архивы закрывать от индексации.
Пошаговое решение: как убрать дубли в WordPress
1. Приведите сайт к одному базовому адресу
В Настройки → Общие проверьте, чтобы WordPress Address и Site Address были в одном формате: с HTTPS и без лишних вариантов домена. Если сайт должен жить на https://example.com, не оставляйте параллельно доступным http:// или www без редиректа.
На уровне сервера настройте 301-редирект на один канонический хост. Для Apache это обычно делается в .htaccess:
RewriteEngine On
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [L,R=301]Для Nginx логика та же, но в конфиге сервера. Важно не делать цепочку из нескольких редиректов: сначала http → https, потом www → без www. Лучше сразу в один шаг.
2. Склейте параметры, которые не должны индексироваться
Если у вас в индексе всплывают URL с параметрами вроде ?replytocom=, ?utm_, ?sort=, ?filter=, нужно решить, что с ними делать. Для маркетинговых меток обычно достаточно canonical на чистый URL. Для технических параметров — либо canonical, либо 301, если параметр не нужен для отдельной страницы.
Пример: если на сайте есть старые ссылки с ?replytocom, их можно перенаправлять на основной URL через template_redirect:
add_action('template_redirect', function () {
if (isset($_GET['replytocom']) && is_singular()) {
$url = get_permalink();
wp_safe_redirect($url, 301);
exit;
}
});Это не универсальное решение для всех параметров, но для конкретного мусорного параметра работает предсказуемо. Если параметр нужен для JS-функции, редирект делать нельзя — тогда ограничьтесь canonical и настройкой индексации.
3. Настройте canonical на уровне шаблона или SEO-плагина
Canonical должен указывать на единственную основную версию страницы. Если SEO-плагин уже выводит canonical, не дублируйте его вручную в теме. Ошибка здесь частая: в коде темы добавляют свой <link rel="canonical">, а плагин выводит второй. В итоге поисковик получает противоречивые сигналы.
Если нужен ручной контроль для нестандартного шаблона, можно добавить canonical через wp_head, но только после проверки, что другой canonical не выводится:
add_action('wp_head', function () {
if (!is_singular()) {
return;
}
$canonical = get_permalink();
echo '<link rel="canonical" href="' . esc_url($canonical) . '" />' . "\n";
}, 1);Используйте этот подход только если понимаете, кто ещё пишет head. Иначе проще и безопаснее настроить canonical в SEO-плагине.
4. Закройте от индексации архивы, которые не несут ценности
Если на сайте есть пустые архивы тегов, технические страницы автора или даты, их лучше либо наполнить, либо закрыть от индексации. В WordPress это можно сделать через SEO-плагин или кодом. Кодовый вариант полезен, когда нужно точечно закрыть только часть архивов:
add_filter('wp_robots', function (array $robots) {
if (is_tag() || is_date() || is_author()) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});Такой вариант не ломает обход ссылок, но просит поисковик не держать эти архивы в индексе. Если архивы уже приносят трафик, не закрывайте их автоматически — сначала проверьте статистику в Search Console.
5. Уберите дубли из темы и хлебных крошек
Иногда дубли создаёт не контент, а шаблон. Например, одна и та же рубрика выводится в заголовке, хлебных крошках и в блоке похожих материалов, а ещё есть отдельная страница с тем же списком записей. Это не всегда проблема для поисковика, но часто создаёт одинаковые сниппеты и лишние URL.
Проверьте:
- не создаёт ли тема отдельные архивы для одного и того же набора записей;
- нет ли у рубрик и тегов одинаковых title и description;
- не выводится ли один и тот же текст в нескольких шаблонах;
- не генерируются ли страницы поиска, которые попадают в индекс.
Если тема перегружена SEO-дублями, иногда проще убрать лишнюю генерацию через настройки или заменить шаблонную логику. В таких случаях полезно проверить, не делает ли плагин чистки сайта то, что вы пытаетесь собрать вручную. Например, в Clearfy Pro есть инструменты для отключения лишних элементов и управления дублями, но использовать их стоит только после сверки с текущей SEO-настройкой сайта.
Как проверить, что решение сработало
После правок не ограничивайтесь открытием страницы в браузере. Нужна проверка по цепочке:
- Откройте старые варианты URL и убедитесь, что они отдают 301 на один адрес.
- Проверьте исходный код страницы и найдите один canonical, а не несколько.
- Посмотрите заголовки ответа через
curl -Iили DevTools: должен быть один финальный URL без лишних редиректов. - В Google Search Console отправьте проверку URL и посмотрите, какой адрес выбран каноническим.
Пример быстрой проверки редиректа из консоли:
curl -I https://www.example.com/post-name/?replytocom=12В ответе должен быть 301 и заголовок Location с чистым URL. Если вместо этого видите 200, редирект не сработал.
Частые ошибки и как их исправить
Делают noindex вместо редиректа для дубля одного материала
Если две страницы содержат один и тот же контент, правильнее оставить одну и отправить вторую на 301. noindex не решает проблему размывания ссылочного веса и не убирает дубли из обхода.
Ставят canonical на несуществующий или динамический URL
Canonical должен вести на реальную, доступную страницу. Если он указывает на URL с параметром, который меняется от запроса к запросу, поисковик может проигнорировать такой тег.
Закрывают от индексации всё подряд
Иногда после чистки в robots или через noindex уезжают и полезные страницы. Особенно это касается рубрик, которые реально собирают трафик. Перед массовым закрытием проверьте, какие архивы уже ранжируются.
Оставляют цепочки редиректов
Если старый URL ведёт на промежуточный адрес, а потом ещё раз редиректится, это лишняя задержка и лишний риск ошибок. Сведите редирект к одному шагу.
Дублируют SEO-логику в плагине и теме
Когда canonical, title и robots выводятся и плагином, и темой, результат становится непредсказуемым. Оставьте один источник правды: либо SEO-плагин, либо код темы, но не оба сразу.
Что делать, если дубли появляются снова
Если после чистки проблема возвращается, значит источник не устранён. Обычно это один из трёх сценариев: новый плагин добавил свои архивы, тема начала генерировать дополнительные шаблоны, или редакторы публикуют материалы в нескольких рубриках и тегах без правил. В таком случае помогает короткий регламент:
- один основной URL для записи;
- одна каноническая версия домена;
- не больше одного SEO-решения для canonical и robots;
- регулярная проверка Search Console после обновлений темы и плагинов;
- контроль новых архивов и параметров в URL после каждого релиза.
Если нужно не только убрать дубли, но и системно почистить сайт от лишних архивов, мета-тегов и технического мусора, лучше сначала собрать карту URL, а уже потом вносить точечные изменения. Так проще понять, что именно сломалось после обновления и где искать источник повторного дубля.