Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелочей: архивы тегов, страницы автора, пагинация, параметры в URL, версии для печати, вложения медиафайлов, а иногда и страницы с одинаковым контентом из-за настроек темы или плагинов. В результате поисковик видит несколько адресов с одной и той же или почти одинаковой страницей, а сайт теряет качество индексации.
Если задача не в том, чтобы «запретить всё подряд», а в том, чтобы оставить в индексе только полезные URL, нужен точный разбор: что закрывать, что канонизировать, а что вообще не трогать. Ниже — рабочая схема без лишней магии.
Как понять, что у сайта именно проблема с дублями
Сначала стоит отличить дубли от обычных архивов. Не каждая повторяющаяся страница — ошибка. Например, пагинация рубрики может быть нормальной, если она нужна пользователю и не плодит мусорные URL с параметрами.
Типичные признаки
- в индексе есть страницы с
?replytocom=,?amp,?utm_или другими параметрами; - в поиске всплывают вложения изображений вместо самих записей;
- одна и та же статья доступна по нескольким адресам: с рубрикой и без, с www и без, с /page/2/ и без;
- в отчётах Search Console растёт число страниц, но полезных переходов не прибавляется;
- в исходном коде у разных URL совпадает
canonical, но страницы всё равно индексируются отдельно.
Проверка начинается не с плагина, а с URL. Откройте несколько подозрительных адресов и сравните:
- какой у них
<title>; - есть ли
<meta name="robots" content="noindex,follow">; - куда указывает
rel="canonical"; - не отдает ли сервер 200 OK там, где должен быть редирект или 404.
Что закрывать, а что оставлять в индексе
Самая частая ошибка — закрыть все архивы подряд. Это удобно только на бумаге. На практике можно потерять полезные страницы, которые приводят трафик по низкочастотным запросам.
| Вариант | Когда подходит | Минус |
|---|---|---|
| Плагин для SEO-правил | Нужно быстро закрыть архивы, вложения, служебные страницы без правки темы | Легко переборщить с noindex |
| Код в теме или mu-plugin | Нужна точная логика для конкретного сайта | Требует проверки после обновлений |
| Только canonical | Страницы похожи, но должны оставаться доступными | Не всегда убирает дубли из индекса быстро |
Обычно имеет смысл рассматривать такие группы:
- вложения медиафайлов — почти всегда лучше редиректить на родительскую запись или закрывать от индексации;
- страницы автора — если на сайте один автор и архив не несёт пользы, его часто закрывают;
- теги — если теги дублируют рубрики, их стоит пересмотреть;
- служебные страницы — поиск по сайту, результаты фильтров, страницы с параметрами;
- архивы дат — если это не новостной проект, они часто не нужны в индексе.
Пошаговое решение: закрываем дубли без лишнего риска
Шаг 1. Сначала проверьте, что уже делает тема и SEO-плагин
У многих сайтов дубли появляются не потому, что ничего не настроено, а потому что настройки конфликтуют. Например, тема выводит canonical сама, а SEO-плагин — ещё раз. Или один плагин ставит noindex на архивы, а другой переопределяет заголовки.
Откройте исходный код страницы и найдите:
rel="canonical";meta name="robots";- несколько одинаковых тегов canonical или robots;
- редиректы на вложениях и служебных URL.
Шаг 2. Закройте ненужные архивы через SEO-плагин или код
Если у вас уже стоит SEO-плагин, сначала используйте его настройки. Это проще сопровождать. Но если нужна точечная логика, можно добавить фильтр в functions.php дочерней темы или в отдельный mu-plugin.
Пример: закрыть архивы автора и даты, если сайт ведёт один автор и архивы не нужны:
<?php
add_action( 'wp_head', function () {
if ( is_author() || is_date() ) {
echo '<meta name="robots" content="noindex,follow">' . "\n";
}
}, 1 );Этот вариант рабочий, но у него есть ограничение: он просто добавляет meta-тег. Если тема или плагин уже выводят robots, нужно убедиться, что не получится конфликтующих значений. В идеале такие правила лучше задавать в одном месте.
Шаг 3. Уберите индексацию вложений и лишних страниц медиа
Страницы вложений часто создают мусорный индекс. Для пользователя они почти бесполезны, а поисковик может воспринимать их как отдельные страницы. Если сайт не использует вложения как полноценные посадочные страницы, лучше перенаправлять их на родительскую запись.
Пример редиректа вложений на родительский пост:
<?php
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 );
exit;
}
wp_redirect( home_url( '/' ), 301 );
exit;
}
} );Если у вложения нет родителя, редирект на главную — не идеальный, но безопасный вариант. Важно не оставлять такие страницы с кодом 200 и пустым содержанием.
Шаг 4. Приведите canonical к одному варианту URL
Canonical не закрывает страницу от индексации сам по себе, но помогает поисковику выбрать основной адрес. Он особенно важен, если у вас есть:
- страницы с параметрами сортировки или фильтра;
- дубли из-за пагинации;
- версии с разными слешами, www и без;
- страницы, доступные по нескольким путям.
Если canonical уже генерируется SEO-плагином, не дублируйте его вручную. Если нет — добавляйте только после проверки, что на странице один canonical и он указывает на правильный URL.
Диагностика после внедрения: как проверить, что решение сработало
Проверка нужна не только в браузере. Смотрите на поведение URL с точки зрения ответа сервера и HTML.
- Откройте закрытую страницу и убедитесь, что в исходном коде есть
noindex,followили редирект. - Проверьте, что canonical указывает на нужный URL, а не на саму дубль-страницу.
- Убедитесь, что вложения отдают 301, а не 200.
- Прогоните сайт через краулер или хотя бы вручную проверьте несколько типовых URL с параметрами.
- В Search Console посмотрите, не растёт ли число «Просканировано, но не проиндексировано» на старых дублях.
Полезно проверить и заголовки ответа сервера. Например, для вложения или служебной страницы должен быть понятный редирект, а не цепочка из двух-трёх переходов.
curl -I https://example.com/sample-attachment/
curl -I https://example.com/post-name/?replytocom=123Если в ответе видите 200 OK там, где ожидали 301 или noindex, значит правило не сработало или его перебивает другой плагин.
Частые ошибки и почему они возникают
Закрыли рубрики и теги без анализа
Иногда теги дают трафик лучше, чем рубрики, особенно на узких сайтах. Если закрыть их все сразу, можно потерять страницы, которые уже ранжируются. Сначала посмотрите статистику по конкретным архивам.
Добавили noindex, но оставили внутренние ссылки
Если на дубль продолжают вести меню, хлебные крошки и блоки «похожие записи», поисковик будет регулярно обходить этот URL. Это не всегда плохо, но если страниц много, краулинговый бюджет расходуется впустую.
Сделали canonical, но не убрали дубли в sitemap
Если в карту сайта попадают страницы, которые вы хотите закрыть, поисковик получает противоречивый сигнал. Для служебных и закрытых URL они не должны одновременно быть в sitemap.
Поставили редирект на всё подряд
Редирект вложений на родительскую запись — нормальная практика. Но редиректить архивы, пагинацию и фильтры «на главную» без разбора — плохая идея. Так легко сломать навигацию и получить нерелевантные переходы.
Практические советы по безопасности и производительности
Если правите кодом, не вносите изменения прямо в родительскую тему. После обновления они пропадут. Лучше использовать дочернюю тему или отдельный mu-plugin. Для точечных правил это удобнее и безопаснее.
Ещё один момент: не ставьте несколько SEO-плагинов одновременно, если они оба управляют robots, canonical и sitemap. Конфликты между ними — частая причина дублей и странных мета-тегов.
Если нужен более системный набор для чистки дублей, служебных страниц и лишних элементов в WordPress, можно посмотреть Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но и в этом случае не отключайте всё подряд — сначала проверьте, какие именно URL создают проблему.
Короткий рабочий порядок действий
- Найдите конкретные дубли: параметры, вложения, архивы, теги, автора, дату.
- Проверьте, что уже делает тема и SEO-плагин.
- Закройте ненужные страницы через noindex или редирект, а не «на глаз».
- Убедитесь, что canonical указывает на основной URL.
- Проверьте ответ сервера, исходный код и sitemap после изменений.
Если после правок в индексе всё ещё остаются старые URL, это не всегда ошибка. Поисковику нужно время на переобход. Но если новые дубли продолжают появляться, значит источник проблемы не устранён: чаще всего это шаблон темы, фильтр плагина или генерация URL с параметрами.