В WordPress дубли чаще всего появляются не из-за одной ошибки, а из-за набора мелких настроек: архивы автора, теги, страницы пагинации, параметры сортировки, версии с ?replytocom, служебные страницы плагинов. В итоге поисковик видит несколько URL с одинаковым или почти одинаковым содержимым и начинает тратить краулинговый бюджет не туда, куда нужно.
Если задача не в том, чтобы «что-то закрыть», а в том, чтобы убрать именно технические дубли без потери нужных страниц из индекса, лучше идти от диагностики к точечным правкам. Ниже — рабочая схема, которую можно применять на обычном сайте на WordPress без выдуманных костылей.
Какие дубли в WordPress встречаются чаще всего
Сначала полезно понять, что именно вы закрываете. Не все похожие URL являются проблемой. Например, пагинация рубрики нужна пользователю и поисковику, а вот служебные параметры или повторяющиеся архивы часто только шумят.
Типовые источники дублей
- архивы тегов, которые дублируют рубрики;
- архивы авторов на сайте с одним автором;
- страницы пагинации, если они не несут самостоятельной ценности;
- URL с параметрами
?replytocom,?utm_,?sort=и похожими; - страницы поиска по сайту;
- страницы вложений медиафайлов, если они пустые или бесполезные;
- версии с и без слеша, http и https, www и без www, если редиректы настроены непоследовательно.
Диагностика: где искать проблему
Начните не с правок, а с проверки фактических URL. Самый быстрый способ — посмотреть, какие страницы уже попали в индекс и какие варианты одного и того же контента доступны по разным адресам.
Что проверить вручную
- откройте несколько архивов и посмотрите, отличаются ли они содержимым;
- проверьте исходный код страниц на наличие
rel="canonical"; - сравните ответы сервера для вариантов URL с параметрами;
- посмотрите, не индексируются ли страницы поиска и вложений;
- в Search Console проверьте отчёты по страницам, исключённым из индекса, и по дублированным URL.
Если на сайте есть доступ к консоли, удобно быстро проверить заголовки ответа. Например:
curl -I https://example.com/category/news/page/2/
curl -I https://example.com/post-name/?replytocom=123
curl -I https://example.com/?s=wordСмотрите на код ответа, редиректы и наличие канонического URL. Если страница отдаёт 200 OK и при этом не должна индексироваться, это уже повод для настройки.
Пошаговое решение: что закрывать, а что оставлять
Универсальной кнопки нет. Правильнее разделить URL на три группы: оставить в индексе, закрыть от индексации, склеить через canonical или редирект.
1. Оставьте в индексе только полезные архивы
Если рубрики реально помогают навигации и содержат уникальную структуру, их можно оставить. А вот теги на большинстве контентных сайтов часто дублируют рубрики и только размывают семантику. То же касается архивов автора на сайте с одним редактором.
В SEO-плагинах это обычно настраивается без кода. Если нужен более точный контроль, можно использовать фильтры WordPress и мета-теги robots. Но важно не путать noindex и закрытие через robots.txt: если страница уже в индексе, запрет в robots не гарантирует её удаление.
2. Закройте страницы поиска и служебные URL
Страницы внутреннего поиска почти никогда не должны индексироваться. Они нестабильны, зависят от запросов пользователей и часто создают бесконечное число URL. Аналогично с URL вложений, если у медиафайла нет отдельной полезной страницы.
Для таких случаев лучше использовать noindex, follow или редирект на родительскую запись, если вложение не нужно как отдельная страница.
3. Уберите параметры, которые создают копии страниц
Параметры вроде ?replytocom или UTM-меток часто порождают дубли одного и того же материала. Для UTM обычно достаточно корректного canonical на чистый URL. Для ?replytocom лучше проверить, не создаёт ли тема или плагин лишние ссылки на старый формат комментариев.
Если параметр не нужен для индексации, не пытайтесь «запретить всё подряд». Сначала убедитесь, что он действительно не влияет на функциональность.
4. Настройте canonical там, где есть похожие страницы
Canonical полезен, когда несколько URL должны существовать для пользователя, но поисковику нужен один основной адрес. Это касается пагинации, фильтров, сортировок и UTM-меток. Но canonical не лечит всё: если у вас две полноценные страницы с разным смыслом, склеивать их нельзя.
Проверяйте, чтобы canonical указывал на индексируемую версию без лишних параметров и с правильным протоколом.
Пример: закрыть поиск и вложения через код
Если на сайте нет плагина SEO или нужен точечный контроль, можно добавить небольшую логику в functions.php дочерней темы или в собственный мини-плагин. Ниже пример: страницы поиска и вложений получают noindex, а вложения редиректятся на родительскую запись, если она есть.
add_action('template_redirect', function () {
if (is_attachment()) {
$parent_id = wp_get_post_parent_id(get_the_ID());
if ($parent_id) {
wp_safe_redirect(get_permalink($parent_id), 301);
exit;
}
}
});
add_filter('wp_robots', function (array $robots) {
if (is_search() || is_attachment()) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});Этот вариант не заменяет полноценный аудит, но помогает быстро убрать самые частые технические дубли. Если у вас уже есть SEO-плагин, проверьте, не конфликтует ли он с собственными фильтрами.
Сравнение подходов: плагин, код, редирект
| Подход | Когда уместен | Плюсы | Минусы |
|---|---|---|---|
| SEO-плагин | Нужно быстро закрыть архивы, теги, поиск, авторов | Удобно, меньше ручной работы | Не всегда хватает точности |
| Код в теме/плагине | Нужны точечные правила для конкретного сайта | Полный контроль | Требует аккуратности и тестирования |
| 301-редирект | Есть явные пустые или лишние URL | Убирает дубли на уровне сервера | Нельзя использовать вместо noindex для всех случаев |
Как проверить, что решение сработало
После настройки не ограничивайтесь визуальной проверкой. Нужны технические признаки, что поисковик увидит именно то, что вы задумали.
- откройте страницу и проверьте исходный код на
noindexи canonical; - проверьте, что закрытые URL отдают ожидаемый код ответа или редирект;
- сравните URL с параметрами и без параметров;
- посмотрите в Search Console, исчезают ли лишние варианты из отчётов;
- убедитесь, что важные страницы не получили случайный
noindex.
Если используете консоль, можно быстро проверить canonical в HTML:
curl -s https://example.com/page/ | grep -i canonical
curl -s https://example.com/?replytocom=1 | grep -i robotsНа живом сайте удобнее смотреть не только код страницы, но и поведение после очистки кеша. Иногда проблема сидит в кеше плагина или CDN, а не в самой настройке WordPress.
Частые ошибки и как их исправить
Закрыли в robots.txt вместо noindex
Это частая ошибка. Если URL уже известен поисковику, запрет в robots.txt не гарантирует удаление из индекса. Для удаления дублей обычно нужен noindex или редирект, а robots.txt оставляют для служебных и неиндексируемых разделов, которые не должны даже сканироваться.
Поставили noindex на всё подряд
Иногда после установки SEO-плагина в noindex уезжают рубрики, записи, пагинация и даже главная. Проверяйте шаблоны и массовые настройки по типам записей, а не только один экран плагина.
Склеили разные страницы через canonical
Canonical не должен подменять смысл. Если страницы отличаются содержимым и задачей, поисковик может проигнорировать такой canonical или воспринять его как ошибку. Для реально лишних URL лучше редирект или noindex.
Не учли кеш
После правок старые мета-теги могут продолжать отдаваться из кеша страницы, объекта или CDN. После настройки обязательно очистите все уровни кеширования и проверьте HTML заново.
Практические советы по безопасности и производительности
Если вы правите индексацию кодом, делайте это в дочерней теме или в отдельном мини-плагине. Так вы не потеряете изменения при обновлении темы. Не редактируйте ядро WordPress и не вносите правки в файлы плагинов — это ломается при первом обновлении.
Для больших сайтов полезно держать список правил в одном месте: что закрыто, почему и чем именно — noindex, canonical или редирект. Это экономит время при следующем аудите и помогает не сломать SEO при редизайне.
Если нужен более системный подход к чистке дублей и технической оптимизации, можно посмотреть на Clearfy Pro. Но даже с плагином полезно понимать, какие URL вы закрываете и зачем: автоматическая настройка без проверки часто создаёт новые проблемы вместо старых.
Рабочий ориентир простой: если URL не несёт самостоятельной ценности для пользователя и только размножает один и тот же контент, его нужно либо закрыть от индексации, либо склеить, либо убрать редиректом. Всё остальное — уже детали реализации, которые зависят от структуры конкретного сайта.