Дубли в WordPress редко выглядят как одна явная ошибка. Чаще это набор похожих URL: одна и та же запись доступна через архивы рубрик, теги, авторов, пагинацию, параметры сортировки, версии с www и без, со слешем и без него. В итоге поисковик тратит обход на лишние адреса, а в индексе появляются страницы, которые вы не планировали продвигать.
Ниже разберём не абстрактную «борьбу с дублями», а конкретный сценарий: как найти источники дублей в WordPress, что закрывать, что оставлять, и как проверить, что после правок сайт не начал терять нужные страницы.
Когда проблема уже есть: как это выглядит в поиске и в логах
Обычно сигнал приходит не из админки, а из внешних инструментов:
- в Google Search Console появляются страницы с одинаковым содержимым или «другая страница с каноническим URL»;
- в индексе всплывают архивы тегов, авторов и дат, которые не несут ценности;
- одна и та же запись открывается по нескольким адресам: через рубрику, через поиск сайта, через UTM-параметры, через пагинацию;
- в отчётах краулера видно, что canonical указывает не туда или отсутствует на части шаблонов.
Что проверить в первую очередь
Начинайте не с правки robots.txt, а с диагностики. Robots.txt не убирает URL из индекса сам по себе, он только ограничивает обход. Если страница уже попала в индекс, запрет в robots.txt может даже затянуть её очистку.
- Откройте несколько проблемных URL и сравните
<link rel="canonical">в исходном коде. - Проверьте, не создаёт ли тема отдельные архивы для тегов, авторов, дат и форматов записей.
- Посмотрите, не генерируются ли дубли через параметры
?replytocom=,?amp,?utm_*,?sort=и похожие. - Сравните версии URL с разным регистром, слешем и протоколом.
Откуда в WordPress берутся дубли
У WordPress есть стандартные источники дублей, и большинство из них не связаны с багом. Это нормальное поведение CMS, которое нужно осознанно ограничить.
| Источник | Что создаёт | Что делать |
|---|---|---|
| Архивы тегов | Много страниц с похожими подборками | Оставить только если они реально нужны для поиска и навигации |
| Архивы авторов | Дубли записей одного автора | Закрыть, если на сайте один автор или архивы не используются |
| Архивы дат | Повторяют ленту публикаций | Обычно отключают для контентных сайтов |
| Параметры URL | Технические и рекламные копии страниц | Нормализовать canonical и не индексировать мусорные параметры |
Пошаговое решение: что править в WordPress
1. Нормализуйте основной URL сайта
Сначала убедитесь, что сайт отдаёт один вариант домена: либо с www, либо без него. То же касается HTTPS и завершающего слеша. Если на уровне сервера и WordPress разные правила, дубли будут появляться снова после каждой правки шаблонов.
Проверьте:
Настройки → Общие:Адрес WordPress (URL)иАдрес сайта (URL)должны совпадать по схеме;- редиректы на уровне nginx/Apache должны вести на один канонический вариант;
- внутренние ссылки в теме не должны собираться вручную с разными форматами.
2. Закройте ненужные архивы через SEO-плагин или код
Если у вас уже есть SEO-плагин, используйте его настройки для архивов. Это безопаснее, чем править шаблоны вручную, если в теме нет собственной логики canonical. Но если нужен точечный контроль, можно отключить архивы программно.
Пример: убрать архивы автора и даты, если сайт ведётся одним редактором и эти страницы не несут пользы.
<?php
add_action('template_redirect', function () {
if (is_author() || is_date()) {
wp_redirect(home_url('/'), 301);
exit;
}
});Такой вариант грубый, но рабочий. Его стоит применять только если вы точно понимаете, что архивы не нужны ни пользователям, ни поиску. Более мягкий подход — оставить страницу доступной, но закрыть её от индексации через SEO-плагин или добавить noindex на нужный шаблон.
3. Уберите дубли от параметров и служебных URL
Параметры вроде utm_source не должны создавать отдельные страницы в индексе. Обычно canonical на основной URL решает проблему, но только если он стабильно выводится на всех шаблонах. Если у вас есть собственные фильтры, поиск или сортировки, проверьте, не меняют ли они содержимое страницы настолько, что canonical становится спорным.
Для служебных страниц можно добавить защиту на уровне шаблона:
<?php
add_filter('wp_robots', function (array $robots) {
if (is_search() || is_404()) {
$robots['noindex'] = true;
$robots['nofollow'] = true;
}
return $robots;
});Это не лечит дубли как таковые, но помогает не раздувать индекс страницами поиска и ошибками 404, если они у вас массово попадают в обход.
4. Проверьте canonical на записях, рубриках и страницах
Canonical должен указывать на единственный предпочтительный URL. Если тема или плагин выводят его неправильно, поисковик может выбрать другую версию страницы. Это особенно заметно на страницах с пагинацией, фильтрами и параметрами.
Если нужно принудительно задать canonical для конкретного шаблона, используйте фильтр wpseo_canonical только в том случае, если у вас установлен Yoast SEO. Для ядра WordPress безопаснее работать через собственную логику шаблона или SEO-плагин, который уже умеет управлять canonical без костылей.
Как проверить, что решение сработало
После изменений не ограничивайтесь открытием главной страницы. Проверять нужно именно те URL, которые раньше создавали дубли.
- Откройте исходный код проблемной страницы и убедитесь, что canonical ведёт на нужный адрес.
- Проверьте, что старые варианты URL отдают 301 на канонический адрес, если вы настраивали редирект.
- Прогоните сайт краулером или хотя бы выборочно проверьте архивы тегов, авторов и дат.
- В Search Console отправьте на повторную проверку только те URL, где вы реально меняли логику индексации.
Если после правок в индексе всё ещё остаются старые копии, это не всегда ошибка. Поисковику нужно время, чтобы переобойти страницы и обновить сигналы. Важно, чтобы новые обходы уже видели правильный canonical и статус страниц.
Частые ошибки и как их исправить
Закрыли URL в robots.txt и ждёте удаления из индекса
Это частая ошибка. Если страница уже известна поисковику, запрет в robots.txt не гарантирует её быстрое исчезновение. В таких случаях лучше использовать noindex или 301-редирект на канонический URL, если страница не нужна совсем.
Ставят canonical на главную для всех страниц подряд
Так делать нельзя. Canonical должен указывать на эквивалентную страницу, а не просто на «главную, чтобы не мешала». Иначе вы сами обесцениваете внутренние страницы и путаете поисковик.
Отключают архивы, не проверив внутренние ссылки
Если рубрика или автор использовались в меню, хлебных крошках или блоках «похожие материалы», после отключения архивов появятся битые ссылки. Сначала проверьте, где эти URL используются, и только потом закрывайте их от индексации или редиректите.
Оставляют параметры сортировки без контроля
Если на сайте есть фильтры, сортировки или поиск по каталогу записей, параметры могут создавать десятки почти одинаковых страниц. Минимум — проверьте canonical. Если параметр не меняет смысл страницы, он не должен плодить отдельный индексируемый URL.
Безопасность и производительность: что не стоит делать
Борьба с дублями не должна превращаться в набор агрессивных редиректов и тяжёлых фильтров на каждом запросе. Чем больше логики вы вешаете на template_redirect, тем выше риск сломать REST API, предпросмотр записей или административные сценарии.
- Не редиректите всё подряд на главную.
- Не правьте canonical через поиск и замену в базе без проверки шаблонов.
- Не отключайте целые разделы сайта, если они нужны для навигации.
- Не смешивайте SEO-логику темы и плагинов без понимания, кто именно выводит canonical.
Если нужен более системный контроль дублей, удобнее использовать SEO-плагин с настройками архивов и canonical, а для общей чистки сайта и технической оптимизации можно посмотреть в сторону Clearfy Pro. Но даже с плагином полезно понимать, какие URL вы закрываете и почему.
Мини-чек-лист перед публикацией правок
- Основной домен и протокол приведены к одному варианту.
- Canonical на записях и страницах указывает на правильный URL.
- Ненужные архивы автора, даты и тегов отключены или закрыты от индексации.
- Параметры URL не создают отдельные индексируемые копии.
- Старые адреса, если нужно, отдают 301, а не 200 с тем же контентом.
- Внутренние ссылки не ведут на устаревшие версии страниц.
Если после этого дубли остаются, ищите источник не в индексации, а в шаблонах темы, фильтрах плагинов или в генерации ссылок на стороне сервера. В WordPress дубли почти всегда появляются из-за нескольких маленьких решений, а не из-за одной большой поломки.