Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелких настроек: архивы тегов, пагинация, параметры сортировки, версии с www и без него, HTTP и HTTPS, страницы вложений, служебные URL плагинов. В итоге поисковик видит несколько адресов с одинаковым или почти одинаковым содержимым и сам выбирает, что индексировать. Это не всегда катастрофа, но почти всегда лишний шум для обхода и аналитики.
Ниже — рабочий сценарий: как сначала понять, какие именно дубли у вас есть, потом убрать источник проблемы и проверить, что после правок не сломались редиректы и каноникал.
Какие дубли в WordPress встречаются чаще всего
Перед правкой полезно разделить проблему на типы. От этого зависит, нужен ли 301-редирект, noindex или только корректный rel="canonical".
- Технические дубли:
http/https,www/non-www, адреса со слешем и без слеша. - Архивные дубли: страницы рубрик, тегов, авторов, дат, пагинация архивов.
- Контентные дубли: страницы вложений, страницы с параметрами
?replytocom=,?amp, сортировки и фильтры. - Шаблонные дубли: одинаковые блоки текста на нескольких посадочных страницах, автогенерируемые описания, повторяющиеся сниппеты.
Диагностика: как найти дубли до внесения правок
Начинать лучше не с кода, а с проверки фактических URL. Если сразу отключить архивы или поставить массовый noindex, можно потерять полезные страницы. Сначала соберите список адресов, которые уже попали в индекс или создаются сайтом автоматически.
Что проверить вручную
- Откройте одну и ту же страницу в вариантах
httpиhttps, сwwwи без него. - Проверьте, не открывается ли вложение изображения как отдельная страница.
- Посмотрите, не индексируются ли архивы тегов и авторов без реальной пользы.
- Проверьте URL с параметрами:
?replytocom=,?utm_*, сортировка, фильтры. - Посмотрите исходный код страницы и найдите
<link rel="canonical".
Если у вас есть доступ к Google Search Console, откройте отчёт по страницам и посмотрите, какие URL считаются дубликатами, а какие — альтернативными страницами с правильным canonical. Это помогает не гадать, а работать с реальными адресами.
Быстрая проверка через сервер
Если нужно понять, куда ведёт редирект и какой код ответа отдаёт сервер, используйте curl:
curl -I https://example.com/page/
curl -I http://example.com/page
curl -I https://www.example.com/pageИщите три вещи: статус 301 или 302, заголовок Location и наличие canonical в HTML. Если одна и та же страница доступна по нескольким адресам без редиректа, это уже источник дубля.
Что исправлять в первую очередь
Самая безопасная последовательность — сначала привести к одному формату домен и протокол, потом убрать лишние архивы, затем заняться параметрами и вложениями. Так вы не смешаете технические и контентные проблемы.
| Подход | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| 301-редирект | Для одинаковых URL и вариантов домена | Передаёт сигнал на основной адрес | Нужна аккуратная настройка, чтобы не сделать цепочки |
noindex | Для архивов и служебных страниц | Не мешает пользователю открыть страницу | Страница остаётся доступной, но не должна попадать в индекс |
canonical | Для похожих страниц и параметров | Подсказывает поисковику основную версию | Не заменяет редирект там, где нужен именно редирект |
Пошаговое решение: убираем дубли в WordPress
1. Приведите сайт к одной версии домена
В Настройки → Общие проверьте, что Адрес WordPress (URL) и Адрес сайта (URL) совпадают по протоколу и домену. Если сайт должен работать только на https://example.com, не оставляйте в настройках http или www.
На уровне сервера настройте один канонический вариант. Для 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} [L,R=301]
</IfModule>Для Nginx логика та же, но конфиг будет другим. Важно не плодить несколько редиректов подряд: сначала www → без www, потом http → https, а не наоборот.
2. Отключите лишние архивы, если они не нужны
Если у вас маленький или средний контентный сайт, архивы авторов и дат часто не несут самостоятельной ценности. Их можно закрыть от индексации или отключить, если тема и структура сайта это позволяют.
Через код можно убрать архивы автора и даты из выдачи, если они не используются:
add_action('template_redirect', function () {
if (is_author() || is_date()) {
wp_redirect(home_url('/'), 301);
exit;
}
});Этот вариант жёсткий: он отправляет все такие архивы на главную. Если архивы нужны для навигации, лучше не редиректить их, а оставить доступными и закрыть от индексации через SEO-плагин или мета-тег noindex.
3. Уберите страницы вложений
Страницы вложений — частый источник мусорных URL. Пользователь открывает картинку, а WordPress показывает отдельную страницу вложения, которая почти всегда дублирует смысл медиафайла.
Если тема или плагин не перенаправляют вложения автоматически, можно сделать это кодом:
add_action('template_redirect', function () {
if (is_attachment()) {
$parent = wp_get_post_parent_id(get_the_ID());
wp_redirect($parent ? get_permalink($parent) : home_url('/'), 301);
exit;
}
});Это особенно полезно для сайтов, где медиафайлы массово индексируются отдельно от статей.
4. Настройте canonical для страниц с параметрами
Если у вас есть страницы с сортировкой, фильтрами или трекинговыми параметрами, не всегда нужен редирект. Иногда достаточно указать канонический URL без параметров.
В WordPress можно подменить canonical для конкретных шаблонов через фильтр wpseo_canonical в Yoast SEO или аналогичный фильтр вашего SEO-плагина. Но если вы не хотите завязываться на плагин, проще следить за тем, чтобы шаблон страницы выводил корректный canonical сам по себе. Для обычных страниц WordPress это делает ядро, но при кастомных шаблонах и плагинах стоит проверить вывод вручную.
Если параметр не должен менять содержимое, а только интерфейс, лучше не создавать отдельную индексируемую страницу. Например, сортировку товаров или записей можно оставить для пользователя, но не для поисковика.
Когда нужен плагин, а когда достаточно кода
Если задача — быстро закрыть типовые дубли, проще использовать SEO-плагин или инструмент для технической чистки сайта. Например, в Clearfy Pro есть набор настроек для отключения лишних сущностей WordPress, которые часто создают дубли и шум в индексации: архивы, служебные элементы, часть мета-выводов. Это не замена серверным редиректам, но хороший способ убрать лишнее без правки темы. Подробности можно посмотреть на странице плагина.
Код нужен там, где поведение должно быть точечным: отдельный тип записей, специфичный шаблон, нестандартные параметры URL или интеграция с чужим плагином. Если задача типовая и вы не хотите поддерживать собственный сниппет, плагин обычно безопаснее.
Проверка результата после внедрения
После правок не ограничивайтесь открытием пары страниц в браузере. Нужно проверить, что основной URL действительно один, редиректы не зациклились, а дубль не остался доступным по старому адресу.
- Проверьте
curl -Iдля старого и нового URL. - Убедитесь, что старый адрес отдаёт
301, а не200или цепочку из нескольких редиректов. - Посмотрите исходный код основной страницы и убедитесь, что canonical указывает на неё же.
- Откройте страницу вложения и проверьте, что она ведёт на родительскую запись или главную.
- В Search Console отправьте на переобход ключевые URL, если они уже были в индексе.
Если после правок старые адреса продолжают появляться в индексе, это не всегда ошибка. Поисковику нужно время, чтобы переоценить сигналы. Но если старый URL всё ещё отдаёт 200, значит проблема не решена до конца.
Частые ошибки и как их исправить
Редирект сделан через плагин и через сервер одновременно
В этом случае легко получить цепочку или петлю. Оставьте один источник истины: либо сервер, либо плагин. Для домена и протокола лучше сервер, для точечных URL — код или SEO-плагин.
Страницы закрыли от индексации, но не убрали дубли
noindex не решает проблему доступности URL. Если адрес всё ещё открывается и отличается только параметром, поисковик может продолжать тратить на него обход. Для явных дублей нужен 301 или canonical.
Canonical указывает не туда
Такое часто бывает после миграции сайта, смены темы или установки плагина кеширования. Проверьте, не переписывает ли canonical SEO-плагин, тема или кастомный шаблон.
Удалили архивы, но сломали навигацию
Если рубрики или авторские страницы реально используются пользователями, не редиректите их на главную без анализа. В таком случае лучше оставить страницу доступной, но ограничить её индексацию и сократить дублирующий контент на шаблоне.
Практические советы по безопасности и производительности
Чистка дублей полезна не только для SEO. Меньше мусорных URL — меньше лишних запросов к серверу и меньше шансов, что поисковый робот будет тратить обход на бесполезные страницы.
- Не ставьте массовые редиректы через
functions.php, если это критичный сайт: при ошибке тема может перестать открываться. - Перед изменением правил в
.htaccessили конфиге Nginx сделайте резервную копию. - После отключения архивов проверьте хлебные крошки и внутренние ссылки: они не должны вести на пустые или закрытые страницы.
- Если используете кеш-плагин, очистите кеш после правок, иначе вы будете проверять старую версию страниц.
Если задача выходит за рамки ручной чистки и на сайте много технического мусора, имеет смысл сначала навести порядок в SEO-настройках и только потом править шаблоны. В таких сценариях полезны инструменты уровня Clearfy Pro, а уже затем — точечный код под конкретные URL-правила.