Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелких настроек: архивы тегов, пагинация, параметры в URL, страницы автора, версии с www и без, HTTP и HTTPS, а иногда — из-за темы или плагина, который создаёт отдельные URL для одного и того же контента. Если не разобраться с источником, можно получить лишние страницы в индексе, размывание ссылочного веса и путаницу в аналитике.
Ниже — рабочий сценарий: как сначала диагностировать проблему, потом убрать дубли так, чтобы не сломать канонические адреса и не потерять уже проиндексированные страницы.
Как понять, что у вас именно дубли, а не обычные архивы
Не каждый похожий URL — проблема. Архив категории, страница тега и отдельная запись могут сосуществовать нормально. Проблема начинается, когда один и тот же контент доступен по нескольким адресам, а поисковик выбирает не тот URL, который вы считаете основным.
Типичные признаки
- в Google Search Console растёт число страниц, но полезных переходов больше не становится;
- в индексе есть URL с параметрами вроде
?replytocom=,?amp,?utm_или сортировкой; - одна и та же запись открывается по разным адресам: с
wwwи без, сhttpиhttps; - в выдаче иногда показывается не канонический URL, а архив или версия с параметром;
- в HTML у страниц нет корректного
rel="canonical"или он указывает не туда.
Что проверить в первую очередь
Начните с простого списка URL, которые реально доступны на сайте. Для этого удобно использовать:
- отчёт «Страницы» в Google Search Console;
- краулер вроде Screaming Frog или Sitebulb;
- поиск по сайту через
site:example.comв поиске, если нужно быстро увидеть мусорные адреса; - логи сервера, если подозреваете, что дубли создаёт внешний бот или внутренняя перелинковка.
Если у вас есть доступ к базе, полезно посмотреть, не плодятся ли одинаковые записи через разные типы архивов и таксономий. Но чаще всего достаточно краулера и проверки шаблонов темы.
Откуда в WordPress берутся дубли
У WordPress есть несколько типовых источников дублей. Они не всегда критичны сами по себе, но в сумме дают лишний шум в индексе.
| Источник | Как выглядит | Что делать |
|---|---|---|
| Параметры URL | ?replytocom=, ?amp, UTM, сортировка | закрыть от индексации, убрать внутренние ссылки на такие версии |
| Разные схемы и хосты | http/https, www/non-www | оставить один вариант и настроить 301-редирект |
| Архивы таксономий | категории, теги, метки, авторы | оставить только нужные, остальные закрыть или удалить из индекса |
| Пагинация и сортировка | /page/2/, параметры сортировки | проверить canonical и robots, не плодить лишние ссылки |
| Дубли от темы/плагина | одна запись в нескольких шаблонах | исправить шаблон или убрать лишний вывод |
Пошаговое решение: как убрать дубли безопасно
Шаг 1. Зафиксируйте основной вариант URL
Сначала выберите один канонический формат сайта: https, один хост, один вариант слэшей. Это база, без которой дальнейшая чистка будет неполной.
На уровне сервера или хостинга настройте 301-редирект на единственный вариант. Если у вас уже включён SSL, проверьте, что старые адреса не отдают контент без перенаправления.
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [L,R=301]Этот пример нужно адаптировать под ваш домен и текущую схему. Если редиректы уже делает nginx или панель хостинга, не дублируйте правила в .htaccess.
Шаг 2. Проверьте canonical в теме и плагинах
Для записей, страниц и архивов WordPress обычно сам выводит canonical через wp_head, но тема или SEO-плагин могут это ломать. Откройте исходный код страницы и найдите:
<link rel="canonical" href="https://example.com/post/" />Если canonical отсутствует или указывает на архив, проверьте, не отключён ли вывод wp_head() в шаблоне, и не переопределяет ли его SEO-плагин. Важно, чтобы canonical совпадал с тем URL, который вы хотите видеть в индексе.
Шаг 3. Закройте мусорные параметры и технические версии
Если дубли создают параметры в URL, не пытайтесь решать это только редиректами. Иногда лучше оставить страницу доступной для пользователя, но убрать её из индекса и не плодить внутренние ссылки на такие адреса.
Для точечных случаев можно использовать фильтр wp_robots, если вы хотите добавить noindex на страницы с параметрами. Пример ниже — для фронтенда, где есть параметр replytocom:
add_filter('wp_robots', function ($robots) {
if (isset($_GET['replytocom'])) {
$robots['noindex'] = true;
$robots['nofollow'] = true;
}
return $robots;
});Это не замена нормальной чистке ссылок, но рабочий способ остановить индексацию мусорных URL, пока вы не исправили шаблоны и внутренние ссылки.
Шаг 4. Уберите лишние архивы из индекса
Если у вас на сайте десятки тегов, а часть из них пустая или почти пустая, они часто становятся источником дублей и тонких страниц. Не надо массово удалять всё подряд. Сначала проверьте, что реально несёт пользу.
- оставьте категории, которые помогают навигации;
- закройте от индексации теги, если они дублируют категории;
- проверьте архивы автора, если сайт ведётся одним автором;
- убедитесь, что страницы пагинации не создают отдельные канонические ошибки.
Если используете SEO-плагин, настройте это там. Если работаете без него, можно точечно управлять robots-мета через фильтр:
add_filter('wp_robots', function ($robots) {
if (is_tag() || is_author()) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});Обратите внимание: follow не всегда нужен, если у вас уже есть другие правила robots. Смысл в том, чтобы не закрыть полезные ссылки внутри архива, но убрать сам архив из поиска.
Шаг 5. Исправьте внутренние ссылки
Даже если canonical настроен правильно, внутренние ссылки на параметры, старые адреса или архивы будут постоянно возвращать дубли в обход. Проверьте меню, хлебные крошки, блоки «похожие записи», виджеты и шаблоны темы.
Особенно часто проблема сидит в:
- ручных ссылках в контенте, где остался старый URL после переезда;
- шаблонах, которые строят ссылки с параметрами сортировки;
- плагинах, добавляющих UTM прямо во внутренние переходы;
- кастомных блоках, которые выводят архив вместо записи.
Как проверить, что решение сработало
После правок не ориентируйтесь только на главную страницу и пару случайных URL. Проверьте результат по нескольким признакам.
- Откройте проблемный URL с параметром и убедитесь, что он либо редиректит на канонический адрес, либо получает
noindex. - Посмотрите исходный код страницы и проверьте
rel="canonical". - Прогоните сайт краулером и убедитесь, что нет внутренних ссылок на мусорные URL.
- В Google Search Console откройте отчёт по страницам и посмотрите, уменьшается ли число дублей и альтернативных URL.
- Проверьте серверные логи: если бот продолжает активно ходить по старым адресам, возможно, редирект настроен не на все варианты.
Если вы меняли правила редиректа, обязательно проверьте цепочки. Один лишний прыжок между URL — это уже лишняя нагрузка и риск потерять часть сигналов.
Частые ошибки и как их исправить
Редирект настроен, но дубли всё равно в индексе
Чаще всего причина в том, что редирект закрывает только один вариант URL, а второй остаётся доступным. Например, вы перевели www на без www, но забыли про HTTP, или наоборот. Проверьте все комбинации.
Canonical указывает на архив, а не на запись
Так бывает, если тема вручную выводит canonical в шаблоне или SEO-плагин конфликтует с кастомным кодом. В этом случае сначала отключите кастомный вывод canonical, потом проверьте, кто именно его подменяет.
Закрыли от индексации слишком много страниц
Ошибка типичная для массовой чистки. Не стоит ставить noindex на всё подряд: полезные категории, важные страницы пагинации и рабочие архивы могут приносить трафик. Сначала оцените, какие страницы реально дублируют контент, а какие выполняют навигационную функцию.
Удалили URL, но не сделали 301
Если страница уже была в индексе или на неё вели внешние ссылки, удаление без редиректа создаст 404 и потерю накопленных сигналов. Для старых адресов почти всегда нужен 301 на ближайший релевантный URL, а не просто удаление.
Что делать с дублями, если сайт большой и править всё руками долго
На крупных проектах лучше идти по приоритету: сначала домен и протокол, потом параметры, потом архивы, потом внутренние ссылки. Если у вас много технических дублей из-за SEO-настроек, иногда быстрее использовать инструмент, который закрывает типовые проблемы централизованно. Например, в Clearfy Pro есть функции для чистки лишних элементов и контроля технических дублей, но даже с таким плагином всё равно нужно проверять canonical и редиректы вручную.
Важно не смешивать задачи: плагин может помочь убрать часть мусора, но не исправит неправильную структуру ссылок в теме и не заменит серверный редирект.
Мини-чек-лист перед публикацией изменений
- выбран один основной вариант домена и протокола;
- настроены 301-редиректы для старых адресов;
- canonical на страницах указывает на правильный URL;
- мусорные параметры не попадают во внутренние ссылки;
- архивы тегов, авторов и пагинация проверены отдельно;
- в Search Console нет новых всплесков альтернативных URL;
- цепочки редиректов отсутствуют или сведены к одному шагу.
Если после правок дубли не исчезают, не ищите проблему только в SEO-плагине. В WordPress источник часто находится в теме, в шаблоне архива или в одном неочевидном блоке, который генерирует ссылки не так, как ожидается.