Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелочей: архивы тегов, страницы автора, пагинация, параметры в URL, версии с www и без, HTTP и HTTPS, а иногда — из-за плагинов, которые создают альтернативные адреса для одного и того же контента. В результате поисковик видит несколько страниц с одинаковым или почти одинаковым содержимым и сам решает, какую оставить в индексе. Это почти всегда хуже, чем явная настройка на стороне сайта.
Ниже — рабочий сценарий: как найти источник дублей, что можно закрыть, что лучше оставить, и как проверить, что после правок сайт не потерял нужные страницы из поиска.
Как понять, что у вас именно дубли, а не обычная просадка индексации
Сначала стоит отделить дубли от других проблем. Если в Search Console падает число проиндексированных страниц, это не всегда плохо. Но если в индексе оказываются разные URL с одним и тем же контентом, а в выдаче гуляют то категории, то теги, то параметры сортировки — это уже технический дубль.
Типичные признаки
- одна и та же статья открывается по нескольким адресам;
- в индексе есть страницы с параметрами
?replytocom=,?amp,?utm_...,?orderby=; - в поиске видны и
/category/slug/, и сама запись; - страницы автора, теги и архивы дублируют основной контент;
- сайт доступен одновременно по
httpиhttps, сwwwи без него.
Что проверить в первую очередь
- откройте один и тот же материал в нескольких вариантах URL;
- посмотрите исходный код на наличие
<link rel="canonical">; - сравните заголовки ответа сервера для дублей;
- проверьте, не создаёт ли плагин SEO отдельные архивы или страницы фильтров;
- посмотрите отчёт «Страницы» в Google Search Console, если он уже подключён.
Откуда берутся дубли в WordPress
У WordPress много штатных точек роста дублей. Это не баг, а следствие гибкой структуры контента. Проблема начинается, когда сайт одновременно отдаёт и основной URL, и его альтернативы без жёсткой канонизации или редиректа.
Архивы категорий, тегов и автора
Если в архиве категории повторяется почти весь текст из записей, поисковик может считать такие страницы малоценными. То же касается тегов, особенно если теги создавались без системы и ведут на пустые или слабые страницы.
Параметры в URL
Параметры сортировки, фильтров, UTM-метки, replytocom и похожие хвосты часто создают отдельные адреса. Для аналитики это нормально, но для индексации — нет, если такие URL попадают в поиск.
Дубли из-за неправильных редиректов
Если сайт одновременно отвечает на http://site.ru, https://site.ru, http://www.site.ru и https://www.site.ru, поисковик получает четыре версии одного домена. Нужна одна основная версия и редирект 301 со всех остальных.
Пошаговое решение: что закрывать, а что оставлять
Универсального рецепта нет. Сначала нужно понять, какие URL должны индексироваться, а какие — нет. Для большинства сайтов логика такая: индексируются записи, страницы, важные категории; не индексируются служебные архивы, параметры и технические страницы.
Шаг 1. Зафиксируйте список нужных типов страниц
Составьте короткий список:
- что должно быть в поиске;
- что должно открываться, но не индексироваться;
- что должно отдавать 301 на основной адрес;
- что вообще не должно существовать как отдельная страница.
Это важно, потому что «закрыть всё лишнее» без разбора легко ломает трафик из категорий или пагинации.
Шаг 2. Настройте канонический URL
Если у страницы есть несколько доступных вариантов, canonical должен указывать на основной адрес. Большинство SEO-плагинов делает это автоматически, но проверять всё равно нужно вручную.
Пример проверки в шаблоне:
<?php if ( is_singular() ) : ?>
<link rel="canonical" href="<?php echo esc_url( get_permalink() ); ?>" />
<?php endif; ?>Если canonical уже выводится плагином, не дублируйте его в теме. Два canonical на странице — частая ошибка после ручных правок.
Шаг 3. Уберите лишние архивы из индекса
Для тегов, архивов автора и некоторых таксономий обычно достаточно noindex, а не полного удаления. Это позволяет сохранить навигацию для пользователей, но не плодить мусор в поиске.
Если используете SEO-плагин, проверьте настройки архивов. Если работаете кодом, можно точечно добавить мета-тег:
<?php
add_action( 'wp_head', function () {
if ( is_tag() || is_author() ) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
} );Этот вариант подходит только если вы понимаете, какие архивы хотите закрыть. Не ставьте noindex на всё подряд.
Шаг 4. Закройте параметры, которые не должны индексироваться
Если дубли создаются параметрами, лучше не надеяться на robots.txt. Для уже существующих URL обычно нужен редирект или canonical на чистую версию. Для аналитических меток достаточно не допускать их попадания в внутренние ссылки.
Пример: если у вас есть собственный параметр сортировки, можно принудительно редиректить его на основную страницу, когда сортировка не нужна для индексации:
<?php
add_action( 'template_redirect', function () {
if ( isset( $_GET['orderby'] ) && ! is_admin() ) {
wp_safe_redirect( remove_query_arg( 'orderby' ), 301 );
exit;
}
} );Перед таким редиректом проверьте, не используется ли параметр на реально полезных страницах каталога или архива.
Сравнение подходов: плагин, код или редирект
| Подход | Когда уместен | Плюсы | Минусы |
|---|---|---|---|
| SEO-плагин | Нужно быстро закрыть архивы, canonical, robots | Меньше ручного кода, проще поддержка | Легко переусердствовать и закрыть лишнее |
| Код в теме или mu-plugin | Нужна точечная логика для конкретных URL | Гибкость, контроль над поведением | Требует тестирования и аккуратности при обновлениях |
| 301-редирект | Есть явные альтернативные URL без ценности | Убирает дубли на уровне сервера/WordPress | Неправильный редирект может сломать доступ к страницам |
Проверка результата после внедрения
После правок важно не ограничиваться визуальной проверкой. Нужно убедиться, что поисковик видит именно ту версию, которую вы считаете основной.
Что проверить вручную
- основной URL отдаёт
200 OK; - альтернативные варианты ведут на него через
301или получаютnoindex; - в исходном коде только один canonical;
- страницы, которые должны быть закрыты, не попадают в sitemap;
- внутренние ссылки ведут на чистые URL без параметров.
Проверка через curl
Это самый быстрый способ увидеть, что реально отдаёт сервер:
curl -I https://example.com/sample-post/
curl -I https://example.com/sample-post/?orderby=dateВ первом случае вы должны увидеть 200. Во втором — либо 301 на чистый URL, либо другой ожидаемый сценарий, если параметр нужен.
Проверка в браузере и Search Console
Откройте страницу и посмотрите исходный код. Если canonical указывает на другой адрес, значит где-то осталась старая логика темы или плагина. В Search Console полезно проверить:
- какие URL выбраны как канонические Google;
- есть ли дубли с параметрами;
- не растёт ли число исключённых страниц из-за
noindexили редиректов.
Частые ошибки и как их исправить
Ставят noindex вместо редиректа
Если у страницы есть явный дубль, который не нужен пользователю, лучше убрать его через 301. noindex не решает проблему дублирования URL как таковую, а только просит поисковик не индексировать страницу.
Закрывают в robots.txt то, что уже в индексе
Если URL уже попал в поиск, запрет в robots.txt не удалит его быстро и предсказуемо. Для таких случаев нужны canonical, noindex или редирект, в зависимости от сценария.
Ломают пагинацию архивов
Иногда пытаются закрыть все страницы пагинации одним махом. Это опасно для больших сайтов: часть полезных материалов может перестать нормально обходиться. Сначала проверьте, как именно у вас устроены архивы и есть ли на страницах пагинации уникальная ценность.
Оставляют несколько версий домена
Если сайт доступен и по www, и без него, а ещё по HTTP, поисковик будет выбирать сам. Настройте единую версию в .htaccess или на уровне сервера и проверьте, что CMS тоже использует тот же базовый адрес.
Практические советы по безопасности и производительности
Чем меньше дублей, тем проще обход сайта и тем меньше мусора в индексе. Но не стоит превращать борьбу с дублями в бесконечную чистку.
- не удаляйте архивы, если они реально дают трафик;
- не ставьте массовые редиректы без списка URL;
- не правьте canonical вручную в каждой теме, если это уже делает SEO-плагин;
- проверяйте изменения на staging-копии, особенно если редиректы завязаны на
template_redirect; - после чистки пересоберите sitemap и отправьте его в Search Console.
Если нужен более системный подход к технической чистке сайта, удобно использовать инструменты, которые закрывают дубли, служебные архивы и часть SEO-настроек в одном месте. Например, у Clearfy Pro есть набор функций для удаления дублей и технической оптимизации: https://wpshop.ru/plugins/clearfy.
Главная мысль простая: сначала определите, какие URL должны существовать, потом уберите альтернативы, и только после этого оценивайте эффект в индексации. Если сделать наоборот, можно потерять не дубли, а нормальные страницы.