Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелких настроек: архивы тегов, страницы пагинации, версии с ?replytocom, дубли из-за слэша, HTTP/HTTPS, www/non-www, а иногда и из-за темы или SEO-плагина. В итоге поисковик видит несколько адресов с одинаковым или почти одинаковым контентом и начинает выбирать не тот URL, который нужен вам.
Если задача не в «косметике», а в реальной чистке индекса, сначала нужно понять, какие именно дубли есть на сайте. И только потом решать: где ставить noindex, где делать 301-редирект, а где оставлять канонический адрес.
Какие дубли в WordPress встречаются чаще всего
На практике проблема почти всегда сводится к одному из сценариев ниже. Они выглядят по-разному, но лечатся не одинаково.
- одна и та же страница открывается с
wwwи без него; - сайт доступен по HTTP и HTTPS одновременно;
- есть дубли со слэшем в конце и без него;
- архивы тегов и категорий повторяют смысл страниц и записей;
- страницы пагинации индексируются как отдельные документы без необходимости;
- комментарии создают URL с параметром
?replytocom; - фильтры, сортировки и UTM-параметры плодят технические копии;
- один и тот же контент доступен через вложения, авторские архивы, поиск по сайту или служебные страницы.
Диагностика: как понять, что именно дублируется
Не начинайте с массового удаления. Сначала проверьте, что реально попало в индекс и какие адреса поисковик считает основными. Для этого достаточно нескольких шагов.
Проверка в поиске и крауле
Откройте в Google Search Console разделы с индексированием и посмотрите, какие URL помечены как дубли или выбраны как альтернативные канонические. Если у вас есть доступ к краулеру вроде Screaming Frog, выгрузите список страниц с одинаковыми title, H1 или почти одинаковым текстом. Это быстрее, чем искать вручную.
Еще один полезный тест — сравнить ответ сервера для разных вариантов одного адреса. Если http://, https://, www и без www отдают разные страницы вместо редиректа, проблема уже на уровне конфигурации.
Быстрая проверка через консоль
Если есть SSH, можно проверить редиректы и заголовки без браузера:
curl -I http://example.com/page/curl -I https://example.com/pageВ норме один из вариантов должен вернуть 301 и вести на единственный канонический URL. Если оба адреса отдают 200 OK, это уже кандидат на дубль.
Что исправлять кодом, а что — настройками SEO-плагина
Не все дубли нужно решать одинаково. Ниже — рабочее разделение по типам проблемы.
| Сценарий | Что делать | Компромисс |
|---|---|---|
| HTTP/HTTPS, www/non-www, слэш | 301-редирект на один вариант | Нужен доступ к серверу или .htaccess/nginx |
| Архивы тегов, авторов, дат | noindex или отключение архива | Можно потерять часть внутренней навигации |
| Параметры сортировки, фильтров, UTM | каноникал на чистый URL | Не всегда удобно для аналитики |
?replytocom, вложения, служебные страницы | редирект или запрет индексации | Иногда проще отключить генерацию на уровне темы/плагина |
Пошаговое решение: убираем дубли без лишнего риска
Шаг 1. Приведите сайт к одному базовому адресу
В Настройки → Общие проверьте адрес WordPress и адрес сайта. Они должны совпадать по протоколу и домену. Если сайт должен работать только по HTTPS, не оставляйте старый HTTP-вариант как рабочий.
Для Apache можно использовать такой редирект в .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L]
</IfModule>Для Nginx логика та же, но правило пишется в конфиге сервера. Если у вас нет доступа к серверу, лучше не пытаться имитировать это через плагины, а передать задачу хостингу.
Шаг 2. Настройте канонические URL
Если у вас SEO-плагин, проверьте, что он корректно выводит rel="canonical" на страницах с параметрами, пагинацией и архивами. Это не заменяет редирект, но помогает поисковику понять основной адрес.
Для нестандартных страниц можно добавить каноникал вручную:
add_action('wp_head', function () {
if (is_page('promo') && isset($_GET['utm_source'])) {
echo '<link rel="canonical" href="' . esc_url(get_permalink()) . '" />' . "\n";
}
});Этот вариант уместен только если страница должна индексироваться по чистому адресу, а параметры нужны для аналитики.
Шаг 3. Закройте от индексации архивы, которые не дают ценности
Если на сайте много тонких архивов тегов или авторов, не спешите удалять их физически. Часто достаточно закрыть их от индексации и оставить для навигации пользователей.
В robots.txt не стоит пытаться решить всё подряд. Для WordPress лучше использовать мета-robots или настройки SEO-плагина. Например, архивы дат на контентном сайте обычно не несут самостоятельной ценности и могут быть закрыты от индексации, если они не нужны для поиска.
Шаг 4. Уберите технические дубли параметров
Параметры вроде ?replytocom, ?sort=, ?filter= и UTM часто создают десятки копий одного URL. Если параметр не нужен для отдельной страницы, лучше направлять его на чистый адрес.
add_action('template_redirect', function () {
if (isset($_GET['replytocom']) && is_singular()) {
wp_safe_redirect(get_permalink(), 301);
exit;
}
});Это простой и безопасный вариант для комментариев. Но если у вас другой плагин комментариев или нестандартная тема, сначала проверьте, не ломает ли редирект функциональность.
Шаг 5. Проверьте вложения и медиа-страницы
Медиафайлы в WordPress часто создают отдельные attachment-страницы, которые почти всегда бесполезны для индексации. Если тема или плагин генерирует такие страницы, лучше либо редиректить их на сам файл или родительскую запись, либо отключить их вывод в SEO-настройках.
Если нужно, можно направлять attachment-страницы на родительский пост:
add_action('template_redirect', function () {
if (is_attachment()) {
$parent = wp_get_post_parent_id(get_the_ID());
if ($parent) {
wp_safe_redirect(get_permalink($parent), 301);
exit;
}
}
});Как проверить, что решение сработало
После внедрения не ограничивайтесь визуальной проверкой в браузере. Нужны три уровня контроля.
- Проверьте заголовки ответа через
curl -I: старые URL должны отдавать 301, а не 200. - Откройте исходный код страницы и убедитесь, что
canonicalуказывает на нужный адрес. - Прогоните сайт краулером и посмотрите, исчезли ли дубли title, одинаковые страницы с разными параметрами и цепочки редиректов.
Если у вас есть Search Console, отправьте на переобход несколько проблемных URL и посмотрите, как они классифицируются через несколько дней. Не ждите мгновенного обновления индекса: поисковик меняет представление о каноническом адресе не сразу.
Частые ошибки и как их исправить
Ставят noindex вместо редиректа
Это частая ошибка для технических дублей. Если у страницы есть очевидный основной адрес, лучше делать 301. noindex оставляет дубль доступным, а значит поисковик все равно тратит на него обход.
Оставляют цепочки редиректов
Например, http → https → www → без www. Пользователь этого не видит, но краулер тратит лишние запросы, а иногда теряется часть веса. Нужен один прямой редирект на финальный URL.
Закрывают в robots.txt то, что уже в индексе
Если страница уже попала в индекс, запрет в robots.txt не удалит ее сам по себе. Сначала нужен доступ к странице для переобхода и корректный noindex или редирект, а уже потом — ограничение обхода, если оно действительно нужно.
Ломают пагинацию
Иногда пытаются редиректить все страницы пагинации на первую. Это плохая идея для больших архивов: пользователь и робот теряют доступ к части контента. Лучше оценить, нужны ли эти страницы для навигации, и только потом решать вопрос с индексацией.
Практические советы по безопасности и производительности
Чем меньше лишних URL генерирует сайт, тем проще его обходить и тем меньше нагрузка на сервер. Это особенно заметно на больших проектах с тысячами записей, тегов и параметров фильтрации.
- не плодите архивы тегов без реальной структуры контента;
- не создавайте отдельные страницы под каждый параметр сортировки, если это не нужно для SEO;
- не используйте несколько SEO-плагинов одновременно — они часто конфликтуют в каноникалах и мета-тегах;
- проверяйте, не генерирует ли тема дубли через шаблоны архивов или отдельные блоки;
- если чистите старые URL массово, делайте карту редиректов и тестируйте ее на staging-сайте.
Если нужен инструмент для общей чистки дублей, технических архивов и лишних мета-данных, в экосистеме WPShop есть Clearfy Pro: https://wpshop.ru/plugins/clearfy?utm_source=wpcompany.ru&utm_medium=article&utm_campaign=kak-najti-i-ubrat-dubli-stranic-v-wordpress-bez-poteri-indeksacii. Но даже с плагином важно понимать, какие URL вы закрываете и почему.
Мини-чек-лист перед публикацией изменений
- один базовый домен и один протокол;
- 301-редирект для технических дублей;
- canonical на чистый URL;
- архивы без ценности закрыты от индексации;
- attachment-страницы не создают мусорный индекс;
- нет цепочек редиректов;
- проверка через
curl, краулер и Search Console выполнена.
Если после правок в индексе все еще остаются старые адреса, это не всегда ошибка настройки. Иногда поисковику просто нужно время, чтобы переоценить канонический URL и пересобрать результаты обхода.