Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелочей: одинаковый контент доступен по разным URL, архивы индексируются вместе с основными страницами, а фильтры и параметры запроса плодят копии. В результате поисковик видит несколько версий одной и той же страницы, а вы теряете контроль над индексацией.
Ниже разберём практический сценарий: как быстро найти дубли, какие из них можно закрыть от индексации, а какие лучше склеить редиректом или каноникалами, и как проверить, что после правок сайт не начал отдавать лишние страницы.
Какие дубли встречаются в WordPress чаще всего
Перед исправлением важно понять, что именно у вас дублируется. В WordPress это обычно не только одинаковые записи, но и технические копии:
- страницы с
?replytocom=; - архивы тегов и категорий, которые повторяют контент записей;
- страницы автора на небольшом сайте, где один автор;
- страницы пагинации, если они индексируются без необходимости;
- версии URL со слешем и без слеша, если сервер или плагин настроены криво;
- страницы поиска по сайту и результаты с параметрами;
- печатные версии, AMP-версии или служебные шаблоны, если они есть в теме или плагинах.
Если у вас уже стоит SEO-плагин, это не значит, что проблема решена. Он может закрывать часть архивов, но не уберёт дубли, которые создаёт тема, фильтр или кастомный код.
Диагностика: как понять, где именно плодятся копии
Начните не с правок, а с проверки фактических URL. Самый быстрый способ — посмотреть, какие страницы уже попали в индекс и какие варианты доступны для одной и той же сущности.
Проверка в поиске и в логике сайта
Откройте в поиске запросы вида site:example.ru и сравните:
- сколько страниц категории или записи найдено;
- есть ли в выдаче URL с параметрами;
- появляются ли архивы автора, тегов, дат;
- видны ли страницы пагинации, которые не должны конкурировать с основными страницами.
Дальше проверьте исходный код проблемной страницы. Важно увидеть, есть ли тег canonical и на что он указывает. Если canonical ведёт на саму страницу, но сама страница — дубль, это не исправление, а просто декларация.
Быстрая проверка через консоль
Если есть доступ к серверу, можно посмотреть, какие URL отдают одинаковый контент по заголовкам и коду ответа. Например, для двух вариантов одной страницы:
curl -I https://example.ru/page-name/
curl -I https://example.ru/page-nameЕсли один вариант отдаёт 200, а второй тоже 200 вместо 301, у вас уже есть технический дубль. То же касается параметров:
curl -I 'https://example.ru/page-name/?utm_source=test'
curl -I 'https://example.ru/page-name/?replytocom=123'Для WordPress это полезно ещё и потому, что часть дублей создаётся не в базе, а на уровне маршрутизации.
Что исправлять редиректом, а что закрывать от индексации
Не все дубли нужно лечить одинаково. Если у URL есть очевидный основной вариант, лучше сделать 301-редирект. Если же страница нужна пользователю, но не должна конкурировать в поиске, разумнее использовать noindex или canonical.
| Сценарий | Что делать | Комментарий |
|---|---|---|
| Два URL одной страницы | 301-редирект | Лучший вариант, если один адрес лишний |
| Архивы тегов на маленьком сайте | noindex | Если архивы не несут самостоятельной ценности |
| Параметры сортировки и фильтров | canonical или noindex | Зависит от того, нужен ли URL пользователю |
| Страницы автора при одном авторе | noindex | Часто это технический архив без пользы |
Если сомневаетесь, не закрывайте всё подряд. Сначала уберите явные копии, потом проверьте, не исчезли ли из индекса нужные страницы.
Пошаговое решение без переписывания темы
1. Нормализуйте основной URL
Проверьте, что сайт отдаёт один канонический вариант адреса: со слешем или без, с www или без www. Это лучше делать на уровне сервера или хостинга, а не через цепочку плагинов.
Если нужен редирект на один формат, в .htaccess для Apache можно использовать такой вариант:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.ru$ [NC]
RewriteRule ^(.*)$ https://example.ru/$1 [L,R=301]Для Nginx логика настраивается в конфиге сервера, а не в WordPress. Если доступа к конфигу нет, лучше не городить костыли в functions.php.
2. Закройте служебные архивы, если они не нужны
Если у сайта один автор, архив автора часто дублирует ленту записей. То же касается архивов дат на новостном сайте без архивной ценности. В таких случаях можно поставить noindex через SEO-плагин или фильтры темы, если плагин это позволяет.
Если используете Yoast SEO или Rank Math, проверьте настройки архивов автора, тегов и дат. Не нужно отключать всё подряд: иногда теговые страницы реально работают как посадочные.
3. Уберите дубли от параметров
Параметры ?replytocom=, ?utm_, сортировки и фильтры часто создают отдельные URL. Для UTM лучше не делать редирект, если аналитика их использует, но для индексации такие адреса должны быть неосновными.
Если проблема именно в replytocom, можно отключить этот механизм на уровне WordPress. Для этого добавляют фильтр в тему или мини-плагин:
add_action('init', function () {
if (is_admin()) {
return;
}
if (!empty($_GET['replytocom'])) {
wp_safe_redirect(remove_query_arg('replytocom'), 301);
exit;
}
});Это не универсальное лекарство, но для сайтов с активными комментариями помогает убрать лишние URL из обхода.
4. Настройте canonical там, где редирект не подходит
Если у вас есть страницы фильтрации или пагинации, которые нужны пользователю, но не должны конкурировать с основной страницей, canonical должен указывать на базовый URL. Это особенно важно для архивов и страниц с параметрами сортировки.
В шаблоне можно вывести canonical вручную, если тема не делает этого корректно. Но сначала проверьте, не делает ли это SEO-плагин, иначе получите дублирующий тег.
Пример кода: убрать архив автора для сайта с одним автором
Если сайт ведёт один человек и архив автора не нужен, проще закрыть его от индексации и при необходимости редиректить на главную или страницу «О сайте». Ниже пример для functions.php дочерней темы или собственного мини-плагина:
add_action('template_redirect', function () {
if (is_author()) {
wp_safe_redirect(home_url('/'), 301);
exit;
}
});Если редирект слишком агрессивный, вместо него можно отдать 404 или noindex, но это уже зависит от структуры сайта. Для небольших проектов редирект обычно проще и чище.
Проверка результата после внедрения
После правок не ограничивайтесь визуальной проверкой. Нужно убедиться, что:
- лишние URL отдают 301 или 404, а не 200;
- основная страница имеет один canonical;
- в индексе не осталось старых копий;
- внутренние ссылки ведут на канонический адрес;
- карта сайта не содержит закрытые страницы.
Практический чек-лист:
- проверить 3–5 проблемных URL через
curl -I; - открыть исходный код и найти canonical;
- посмотреть отчёт об индексировании в панели вебмастера;
- сравнить количество страниц в поиске до и после;
- пройтись по архивам, пагинации и страницам с параметрами.
Если после правок в индексе остались старые копии, это нормально: поисковику нужно время на переобход. Но новые дубли не должны появляться снова.
Частые ошибки и как их исправить
Ставят noindex вместо редиректа
Если у страницы есть явный дубль с тем же контентом, noindex не решает проблему полностью. URL остаётся доступным, а поисковик всё равно тратит на него обход. Для одинаковых адресов нужен 301.
Закрывают в robots.txt то, что надо склеить
Если запретить обход в robots.txt, поисковик может не увидеть canonical и не понять, куда вести сигнал. Для уже известных дублей это часто хуже, чем редирект или noindex.
Дублируют canonical через тему и SEO-плагин
Иногда тема выводит свой canonical, а плагин — свой. В итоге в коде два тега, и это уже ошибка. Проверьте исходник и оставьте только один источник.
Редиректят все параметры подряд
Если без разбора убрать все query string, можно сломать фильтры, поиск по сайту и аналитику. Сначала отделите служебные параметры от рабочих.
Не проверяют внутренние ссылки
Даже после правильного редиректа старые ссылки в меню, хлебных крошках и контенте могут вести на дубль. Это создаёт лишние запросы и цепочки редиректов.
Безопасность и производительность: что учесть перед правками
Любые изменения в редиректах и canonical лучше вносить через дочернюю тему или небольшой mu-plugin, а не в основную тему. Так вы не потеряете правки при обновлении.
Перед массовыми изменениями сделайте резервную копию базы и файлов. Если сайт большой, сначала протестируйте правила на одном типе страниц, а уже потом раскатывайте на весь проект. Это особенно важно, если у вас есть кеш на уровне сервера или CDN: старые ответы могут маскировать результат.
Если используете плагины для SEO и чистки дублей, не ставьте несколько решений с одинаковой задачей. Например, два плагина, которые одновременно управляют canonical и архивами, часто создают новые конфликты вместо исправления старых. В таких случаях полезно сначала убрать лишнее, а потом уже настраивать оставшееся.
Для сайтов, где нужно системно чистить дубли, архивы и служебные страницы, иногда проще опереться на один инструмент с понятной логикой. Например, Clearfy Pro закрывает часть типичных дублей и технических хвостов, но даже с ним всё равно стоит проверять итоговый HTML и индексацию вручную: автоматическая настройка не заменяет контроль.