Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелких настроек: архивы, пагинация, теги, параметры URL, версии страниц с и без слеша, http и https, www и без www. В результате поисковик видит несколько адресов с одинаковым или почти одинаковым содержимым и начинает выбирать канонический URL не так, как вы ожидаете.
Ниже разберём рабочую схему: как сначала найти источник дублей, потом убрать причину, а не только симптом, и как проверить, что после правок сайт не потерял нужные страницы из индекса.
Где в WordPress чаще всего появляются дубли
На практике проблема почти всегда сидит в одном из этих мест:
- архивы категорий, тегов, авторов и дат;
- страницы пагинации с одинаковыми title и description;
- страницы с параметрами
?replytocom=,?utm_,?ampи похожими; - дубли главной страницы из-за разных вариантов домена;
- медиа-страницы вложений, которые индексируются отдельно;
- страницы поиска по сайту;
- содержимое, доступное по нескольким URL из-за неправильных редиректов или каноникала.
Если сайт небольшой, дубли часто видно вручную. Если страниц много, лучше сначала собрать список URL из Search Console, краулера вроде Screaming Frog или хотя бы из отчёта по индексированным страницам. Ищите не только точные копии, но и страницы с одинаковым шаблоном мета-тегов и почти одинаковым текстом.
Диагностика: что проверить до правок
Начните с простого чек-листа. Он помогает не лечить не ту проблему.
- Откройте одну и ту же страницу с
httpиhttps. - Проверьте варианты с
wwwи безwww. - Посмотрите, есть ли дубль со слешем в конце и без него.
- Проверьте архивы категорий, тегов, авторов и дат.
- Откройте страницы вложений медиафайлов.
- Посмотрите, не индексируются ли страницы поиска.
- Проверьте, не создаёт ли плагин кэширования или SEO-плагин свои версии страниц.
Если у вас уже есть доступ к Search Console, сравните отчёт по страницам и отчёт по каноническим URL. Когда Google выбирает другой канонический адрес, это почти всегда сигнал, что на сайте есть конфликт сигналов: редирект, canonical, внутренние ссылки или дублирующий контент.
Как убрать дубли: сначала причина, потом индексация
Самая частая ошибка — просто закрыть всё в robots.txt. Это не убирает дубли, а только скрывает их от обхода. Если URL уже в индексе, он может там остаться надолго. Правильнее действовать так: убрать источник дубля, настроить редирект или canonical, а затем ограничить индексацию там, где это действительно нужно.
1. Приведите сайт к одному основному варианту домена
Если сайт доступен по нескольким версиям домена, сначала выберите одну основную: с https и либо с www, либо без него. Это делается на уровне сервера или хостинга, а не в шаблоне WordPress.
Для Apache можно использовать такой редирект в .htaccess:
RewriteEngine On
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.ru$ [NC]
RewriteRule ^(.*)$ https://example.ru/$1 [L,R=301]Для Nginx логика та же, но конфигурация будет другой. Важно не сделать цепочку из двух-трёх редиректов: это замедляет сайт и иногда ломает каноникал.
2. Отключите индексацию ненужных архивов
Если у вас информационный сайт, архивы тегов и дат часто не дают пользы в поиске, а только создают дубли. Их можно закрыть от индексации через SEO-плагин или кодом. Если нужен точечный контроль без плагина, можно добавить noindex для отдельных типов архивов.
add_filter('wp_robots', function ($robots) {
if (is_tag() || is_date() || is_author()) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});Этот вариант не удаляет страницу, а только просит поисковик не индексировать её. Для уже существующих дублей этого мало: если архивы уже в индексе, дополнительно проверьте внутренние ссылки и хлебные крошки, чтобы не плодить новые входы.
3. Уберите медиа-страницы вложений
WordPress может создавать отдельную страницу вложения для каждого изображения. На практике это почти всегда мусорный URL без самостоятельной ценности. Самый безопасный вариант — редиректить такие страницы на сам файл или на родительскую запись, если она есть.
add_action('template_redirect', function () {
if (is_attachment()) {
$parent = wp_get_post_parent_id(get_queried_object_id());
if ($parent) {
wp_redirect(get_permalink($parent), 301);
} else {
wp_redirect(home_url('/'), 301);
}
exit;
}
});Если у вас уже есть SEO-плагин, проверьте, не делает ли он это сам. Двойной редирект или конфликт правил здесь встречается часто.
4. Нормализуйте параметры URL
Параметры вроде ?replytocom= и UTM-меток могут создавать десятки технических дублей. Для UTM обычно достаточно корректного canonical на чистую страницу. Для replytocom лучше отключить сам механизм, если он не нужен.
Если комментарии на сайте не используют древнюю схему ответа через replytocom, можно убрать этот параметр из ссылок и не плодить лишние адреса. Но перед этим проверьте тему и плагины комментариев: некоторые старые решения завязаны на этот механизм.
Сравнение подходов: плагин, код или ручная настройка
| Подход | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| SEO-плагин | Нужно быстро закрыть архивы, настроить canonical и мета-robots | Меньше кода, удобно для редактора | Легко получить конфликт настроек, если уже есть другие SEO-решения |
| Код в теме или мини-плагине | Нужна точечная логика для конкретных URL | Точный контроль, нет лишнего интерфейса | Нужно тестировать после обновлений темы |
| Настройка сервера | Нужно убрать http/www/слеш-версии | Самый правильный уровень для редиректов | Требует доступа к конфигу хостинга |
Пошаговый план внедрения без риска
Если делать всё последовательно, шанс сломать индексацию ниже.
- Соберите список подозрительных URL из Search Console и краулера.
- Определите тип дубля: архив, вложение, параметр, домен, пагинация или поиск.
- Сначала исправьте основной URL: редирект, canonical, единый домен.
- Потом закройте от индексации то, что не должно ранжироваться.
- Проверьте внутренние ссылки в меню, хлебных крошках и блоках похожих записей.
- Обновите sitemap и отправьте его на переобход.
Как проверить, что решение сработало
Проверка нужна не только в браузере. Смотрите на три уровня: ответ сервера, HTML и индекс.
- Откройте URL в режиме инкогнито и убедитесь, что он ведёт на один канонический адрес.
- Проверьте заголовок ответа через
curl -I https://example.ru/page/и убедитесь, что нет лишних 302. - Посмотрите исходный код страницы: canonical должен указывать на нужный URL.
- Проверьте мета-robots у закрытых архивов: там должен быть
noindex, если это задумано. - В Search Console отследите, как меняется статус страниц после переобхода.
Если после правок в индексе остались старые адреса, это нормально не сразу. Главное — чтобы новые ссылки на сайте вели только на правильные URL, а старые версии отдавали 301 или были закрыты от индексации.
Частые ошибки и как их исправить
Закрыли дубли в robots.txt, но не сделали редирект
Такой подход не убирает уже проиндексированные URL. Если страница уже известна поисковику, одного Disallow мало. Сначала редирект или canonical, потом ограничение обхода.
Поставили noindex на важные страницы
Иногда по ошибке закрывают не только архивы, но и категории, которые реально приносят трафик. Перед массовой правкой проверьте, какие архивы уже ранжируются и дают переходы.
Сделали несколько SEO-решений одновременно
Например, один плагин ставит canonical, другой переписывает robots, а третий добавляет свои мета-теги. В итоге поисковик получает противоречивые сигналы. Если используете SEO-плагин, не дублируйте его функции кодом без необходимости.
Редирект вложений ведёт на главную без логики
Это лучше, чем 404, но не всегда оптимально. Если у изображения есть родительская запись, логичнее отправлять пользователя туда. На больших сайтах это ещё и уменьшает число бесполезных входов.
Что ещё стоит учесть для безопасности и производительности
Чем меньше лишних URL генерирует WordPress, тем проще краулинг и ниже нагрузка на сайт. Это особенно заметно на проектах с большим количеством тегов, медиа и автоматических архивов.
- Не плодите десятки тегов ради внутренней навигации.
- Не оставляйте индексируемыми пустые архивы.
- Проверяйте, не создаёт ли тема отдельные шаблоны для одинакового контента.
- После изменений очищайте кэш страницы и объектный кэш, если он есть.
- Если используете CDN, убедитесь, что он не отдаёт старые версии canonical и robots.
Если нужен более широкий контроль над дублями, чисткой и SEO-настройками, можно посмотреть в сторону решений уровня Clearfy Pro: он закрывает часть типовых технических задач без ручного кода. Но даже с плагином полезно понимать, какие именно URL вы убираете и почему.
Главный принцип здесь простой: не маскировать дубли, а сокращать их источник. Тогда сайт становится понятнее и для поисковика, и для поддержки, и для будущих правок темы или плагинов.