Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелких настроек: одинаковые записи доступны по разным URL, архивы индексируются вместе с основными страницами, а параметры в адресе создают новые версии контента. В итоге поисковик видит несколько страниц с одним и тем же смыслом, а сайт тратит краулинговый бюджет на мусорные адреса.
Ниже разберём практический сценарий: как быстро найти дубли, что именно закрывать, где ставить канонический URL и когда нужен редирект, а не noindex.
Как понять, что на сайте есть дубли
Проблема не всегда заметна в админке. Чаще всего её выдают косвенные признаки: в Search Console появляются страницы с одинаковым заголовком, в индексе оказываются архивы тегов и авторов, а одна и та же запись открывается с /category/, без категории, с параметром ?amp или через пагинацию.
Что проверить в первую очередь
- одинаковые title и description у нескольких URL;
- страницы с параметрами сортировки, фильтрации или UTM в индексе;
- архивы тегов, авторов и дат, если они не несут ценности;
- доступность одной записи по нескольким путям;
- наличие
rel="canonical"на страницах с вариациями URL.
Если сайт уже в индексе, самый быстрый способ диагностики — выгрузить список страниц из Search Console и сравнить URL по шаблонам. Для локальной проверки удобно пройтись по сайту краулером или хотя бы посмотреть исходный код нескольких проблемных страниц.
Диагностика дублей: где искать источник проблемы
В WordPress дубли чаще всего создают не записи, а архивы и технические страницы. Перед исправлением важно понять, откуда именно они берутся: из темы, из плагина SEO, из настроек постоянных ссылок или из логики самого контента.
Типовые источники дублей
| Источник | Как выглядит | Что делать |
|---|---|---|
| Архивы категорий и тегов | Один и тот же текст доступен через запись и архив | Оставить только полезные архивы, остальные закрыть от индексации |
| Параметры в URL | ?replytocom=, ?amp, фильтры, сортировка | Каноникал или редирект, в зависимости от сценария |
| Пагинация | /page/2/, /page/3/ | Не путать с дублем, если это нормальная часть архива |
| Авторские и датированные архивы | Повторяют контент рубрик | Отключить индексирование, если они не нужны для поиска |
Пагинация сама по себе не всегда дубль. Если это часть большого архива, её обычно не закрывают целиком. Ошибка начинается тогда, когда на страницах пагинации дублируются title, description и основной H1 без логики навигации.
Пошаговое решение: как убрать дубли без лишнего риска
Ниже — рабочая последовательность, которая подходит для большинства сайтов на WordPress. Сначала наводим порядок в URL, потом в индексации, и только после этого трогаем редиректы.
Шаг 1. Определите, какой URL должен быть основным
Для каждой спорной страницы должен быть один главный адрес. Например, для записи это обычно чистый permalink без параметров. Для рубрики — основной архив категории. Для служебных страниц — либо один канонический URL, либо полное исключение из индекса.
Если у вас несколько версий одной записи, не пытайтесь индексировать все. Оставьте одну основную, остальные либо перенаправьте, либо пометьте как канонические на основную страницу.
Шаг 2. Добавьте canonical там, где есть вариации URL
Если страница доступна с параметрами, но содержимое не должно считаться отдельной страницей, canonical помогает подсказать поисковику основной адрес. В WordPress это можно сделать через фильтр wpseo_canonical в Yoast SEO или аналогичный механизм в другом SEO-плагине. Если плагина нет, можно вывести тег вручную в wp_head, но только если вы точно понимаете, что делаете.
<?php
add_action( 'wp_head', function () {
if ( is_singular() ) {
$canonical = get_permalink();
if ( ! empty( $_GET['amp'] ) ) {
$canonical = remove_query_arg( 'amp', $canonical );
}
echo '<link rel="canonical" href="' . esc_url( $canonical ) . '" />' . "\n";
}
} );Этот пример уместен только для простых случаев. Если SEO-плагин уже управляет canonical, не дублируйте его вывод вручную, иначе получите две канонические ссылки на одной странице.
Шаг 3. Закройте от индексации бесполезные архивы
Если на сайте есть архивы авторов, дат или тегов, которые не дают дополнительной ценности, их лучше закрыть от индексации. Это не то же самое, что удалить страницу: она остаётся доступной пользователям и внутренним ссылкам, но не претендует на место в поиске.
Вариант зависит от SEO-плагина. В Yoast SEO и Rank Math это обычно делается в настройках архивов. Если нужно точечно, можно добавить noindex только для конкретных типов архивов.
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_author() || is_date() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );Такой подход полезен, когда вы не хотите ломать навигацию, но не видите смысла в индексации технических архивов.
Шаг 4. Настройте редиректы для реально дублирующихся адресов
Редирект нужен там, где есть две версии одного и того же адреса, и одна из них должна исчезнуть из оборота. Например, если запись доступна и с /category/post-name/, и без категории, оставьте один вариант и перенаправьте второй на основной.
Для простых редиректов достаточно правила в .htaccess или конфигурации сервера. Если логика сложнее, используйте плагин редиректов или код на уровне template_redirect. Но не превращайте редиректы в цепочки: один лишний переход уже ухудшает скорость и усложняет обход.
<?php
add_action( 'template_redirect', function () {
if ( isset( $_GET['replytocom'] ) && is_singular() ) {
wp_safe_redirect( get_permalink(), 301 );
exit;
}
} );Это пример для частого дубля с replytocom. Он полезен на старых сайтах, где комментарии создают лишние URL.
Что делать с параметрами в URL и фильтрами
Параметры сортировки, фильтрации и трекинга — отдельная категория дублей. Не все из них нужно закрывать одинаково. UTM-метки обычно не должны создавать отдельные страницы, а вот фильтр каталога может быть полезен пользователю, но вреден для индексации.
Если параметр не меняет смысл контента, лучше оставить одну каноническую страницу и не плодить копии. Если параметр меняет выдачу существенно, но вы не хотите индексировать такие комбинации, используйте noindex или ограничьте индексацию на уровне robots и SEO-настроек.
Когда нужен noindex, а когда редирект
- noindex — если страница полезна пользователю, но не должна попадать в поиск;
- 301 redirect — если страница-дубль не нужна вообще и есть однозначная основная версия;
- canonical — если версии нужны, но поисковику надо показать главный URL;
- robots.txt — только для явного технического мусора, а не для решения всех проблем сразу.
Не стоит закрывать всё подряд в robots.txt. Если страница уже в индексе, запрет в robots.txt не удалит её мгновенно и может даже помешать поисковику увидеть canonical или noindex.
Проверка результата после внедрения
После правок не ограничивайтесь визуальной проверкой. Нужно убедиться, что поисковик и браузер видят именно ту версию страницы, которую вы задумали.
Чек-лист проверки
- откройте проблемный URL и проверьте, что он ведёт на нужную страницу;
- посмотрите исходный код и убедитесь, что canonical указывает на основной адрес;
- проверьте, что на закрытых архивах есть
noindex, если это было задумано; - пройдитесь по старым URL через браузер и убедитесь, что нет цепочек редиректов;
- в Search Console отправьте на переобход важные страницы после правок.
Для быстрой проверки заголовков ответа можно использовать curl:
curl -I https://example.com/old-url/В ответе должен быть либо 301 на нужный адрес, либо корректный 200 для основной страницы. Если видите несколько переходов подряд, редирект стоит упростить.
Частые ошибки и как их исправить
Ставят noindex вместо канонического URL
Если страница-дубль должна просто указывать на основную версию, canonical обычно полезнее. Noindex скрывает страницу из поиска, но не объясняет, какая версия основная.
Закрывают в robots.txt то, что уже попало в индекс
Это частая ошибка при чистке архивов и параметров. Поисковик может продолжать держать URL в индексе без возможности нормально переобойти страницу. Сначала решите вопрос на уровне canonical, noindex или редиректа, потом уже ограничивайте обход.
Делают редирект на нерелевантную страницу
Если старый URL указывает на совсем другую тему, это уже не исправление дубля, а плохая замена. В таких случаях лучше вернуть 404 или 410, чем отправлять пользователя и поисковик на случайную страницу.
Оставляют одинаковые title на архиве и записи
Даже если URL разные, одинаковые мета-теги создают ощущение дубля. Проверьте шаблоны заголовков в теме и SEO-плагине: у архива и у записи должны быть разные шаблоны.
Производительность и безопасность: что не стоит делать
Чистка дублей часто затрагивает код темы и плагины. Не вносите правки прямо в родительскую тему: после обновления они пропадут. Для точечных изменений используйте дочернюю тему или небольшой mu-plugin.
Если вы добавляете редиректы и фильтры через код, тестируйте их на staging-копии. Ошибка в условии is_singular() или в проверке параметров может случайно закрыть доступ к нужным страницам или создать бесконечный редирект.
Для сайтов с большим количеством архивов и дублей полезно сначала навести порядок в структуре контента, а уже потом подключать дополнительные инструменты. Если нужен более широкий набор технических настроек, чистка дублей и SEO-правил часто удобнее через профильные плагины вроде Clearfy Pro, но даже в этом случае логику canonical и редиректов всё равно нужно проверять вручную.