Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелочей: архивы тегов, страницы автора, пагинация, параметры в URL, версии с и без слэша, сортировки, служебные страницы плагинов. Если оставить это как есть, поисковик тратит обход на мусорные URL, а в индексе начинают жить не те страницы, которые вы хотите продвигать.
Ниже — рабочая схема, которая помогает не путать три разных задачи: запретить обход, убрать страницу из индекса и подсказать канонический URL. Это не одно и то же, и именно из-за путаницы чаще всего ломают SEO.
Какие дубли в WordPress встречаются чаще всего
Перед правками полезно понять, что именно у вас дублируется. В WordPress типовые источники почти всегда одни и те же:
- архивы тегов и рубрик, которые дублируют контент записей;
- страницы автора на небольших сайтах, где один автор и нет смысла индексировать архив;
- страницы пагинации, если они не несут самостоятельной ценности;
- URL с параметрами
?replytocom=,?utm_,?sort=и похожими; - версии с
wwwи без, со слэшем и без, если редиректы настроены непоследовательно; - страницы поиска по сайту, если они попадают в индекс;
- медиа-страницы вложений, которые часто создаются автоматически и почти никогда не нужны в поиске.
Диагностика проблемы: что смотреть в первую очередь
Начните не с правки robots.txt, а с проверки того, какие URL уже попали в индекс и откуда они берутся. Самый быстрый путь — выгрузить список страниц из Google Search Console и посмотреть, какие типы URL там повторяются. Параллельно проверьте сайт через поиск по оператору site:example.com и посмотрите, не всплывают ли архивы, параметры и вложения.
Если у вас есть доступ к серверным логам или аналитике обхода, полезно посмотреть, какие URL чаще всего запрашивает бот. Это помогает отличить реальную проблему индексации от единичных случайных страниц.
Мини-чек-лист диагностики:
- есть ли в индексе страницы с параметрами;
- попадают ли в поиск архивы тегов и автора;
- открываются ли вложения как отдельные страницы;
- совпадает ли основной URL сайта в
Настройки → Общиеи в редиректах; - не создаёт ли плагин SEO или кеша собственные версии страниц.
Что закрывать через robots.txt, а что — через noindex
Самая частая ошибка — пытаться спрятать всё через robots.txt. Этот файл ограничивает обход, но не гарантирует удаление из индекса, если URL уже известен поисковику. Для страниц, которые уже могут быть в индексе, безопаснее использовать noindex.
| Подход | Когда применять | Плюс | Минус |
|---|---|---|---|
robots.txt | Для служебных разделов, которые не должны обходиться | Снижает лишний crawl | Не убирает уже известные URL из индекса |
noindex | Для архивов, поиска, вложений, страниц без ценности | Даёт поисковику явный сигнал | Страница должна быть доступна для обхода |
canonical | Для дублей одного и того же контента | Указывает основную версию | Не заменяет редирект и не спасает от плохой структуры |
Если страница должна исчезнуть из поиска, но при этом её нужно оставить доступной для обхода, используйте noindex, follow. Если URL вообще не должен обходиться, можно ограничить его через robots.txt, но только для служебных путей, которые не участвуют в SEO.
Пошаговое решение: как убрать дубли без поломки сайта
1. Настройте канонический домен и редиректы
Сначала убедитесь, что у сайта один основной вариант адреса: либо с www, либо без него; либо со слэшем на конце, либо без — в зависимости от вашей структуры. Это лучше решать редиректом 301 на уровне сервера или через корректную настройку хостинга, а не плагином, если есть доступ к конфигурации.
Пример для Apache в .htaccess, если нужно принудительно убрать www:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]Для Nginx логика делается в конфигурации сервера, а не в .htaccess. Если вы не уверены, лучше не дублировать правила в нескольких местах: это часто приводит к цепочкам редиректов.
2. Закройте архивы, которые не несут ценности
На небольших проектах часто нет смысла индексировать архивы автора, даты и часть тегов. Но не стоит закрывать всё подряд. Если теговые страницы реально собирают трафик и помогают навигации, их лучше оставить с уникальным заголовком и описанием.
Для типовой установки WordPress можно добавить noindex на архивы автора и поиска через фильтр в теме или мини-плагине:
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_author() || is_search() || is_attachment() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );Этот вариант работает на современных версиях WordPress, где используется фильтр wp_robots. Он предпочтительнее ручной вставки мета-тегов в шаблон, потому что не ломается при смене темы.
3. Уберите страницы вложений из индекса
Медиа-страницы — частый источник мусора. Пользователь открывает картинку, а WordPress создаёт отдельную страницу вложения с тонким контентом. Если вы не используете такие страницы осознанно, их лучше закрыть от индекса и, при необходимости, редиректить на сам файл или родительскую запись.
Простой вариант — добавить редирект вложений на родительскую запись, если она есть:
<?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;
}
}
} );Если родителя нет, можно оставить страницу доступной, но с noindex. Это лучше, чем удалять её без проверки: иногда вложения используются в старых материалах и могут быть нужны для переходов.
4. Настройте canonical для параметров и похожих страниц
Если у вас есть страницы с параметрами сортировки, фильтрации или UTM-метками, canonical должен указывать на чистую версию URL. В большинстве случаев SEO-плагины делают это автоматически, но полезно проверить результат вручную.
Пример, как принудительно задать canonical для отдельного шаблона или типа страницы:
<?php
add_filter( 'get_canonical_url', function( $canonical, $post ) {
if ( is_singular() && $post instanceof WP_Post ) {
return get_permalink( $post );
}
return $canonical;
}, 10, 2 );Это не универсальная панацея. Если проблема в том, что сайт генерирует слишком много параметров, лучше сначала ограничить их появление в ссылках и формах, а уже потом полировать canonical.
5. Используйте robots.txt только для служебных URL
В robots.txt имеет смысл закрывать только то, что не должно обходиться вообще: служебные папки, внутренние скрипты, иногда результаты поиска, если они не нужны в обходе. Но не стоит запрещать доступ к CSS, JS и изображениям, если это мешает рендерингу.
Пример аккуратного файла robots.txt для типового сайта:
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /?s=
Disallow: /search/
Sitemap: https://example.com/sitemap.xmlЕсли у вас используется ЧПУ-поиск в виде /search/, проверьте, что он действительно существует на сайте. Не копируйте правила вслепую: лишний Disallow иногда закрывает нужные страницы.
Как проверить, что решение сработало
После внедрения не ограничивайтесь визуальной проверкой. Нужны как минимум три уровня контроля: HTML, индексация и обход.
- Откройте страницу и проверьте исходный код: есть ли
<meta name="robots" content="noindex,follow">или эквивалент через HTTP-заголовки. - Проверьте canonical: он должен вести на чистый основной URL, без параметров.
- В Search Console отправьте страницу на повторную проверку и посмотрите, как меняется статус.
- Проверьте, не остались ли старые URL в кеше CDN или плагина кеширования.
Если вы закрывали архивы или вложения, дайте поисковику время на переобход. Не удаляйте правила через день после правки: сначала убедитесь, что новые сигналы стабильно отдаются на всех страницах.
Частые ошибки и как их исправить
Закрыли страницу в robots.txt, а она осталась в индексе
Это нормальная ситуация. Если URL уже известен поисковику, одного Disallow мало. Нужно либо вернуть доступ и отдать noindex, либо поставить 301 на релевантную страницу, если дубль больше не нужен.
Поставили noindex, но canonical указывает на саму себя с параметрами
Так бывает, когда SEO-плагин и тема одновременно формируют canonical. Проверьте, нет ли дублирующей логики в header.php, в SEO-плагине и в кастомных фильтрах. Должен остаться один источник правды.
Закрыли слишком много архивов
Если убрать из индекса все теги и рубрики, можно потерять внутреннюю перелинковку и посадочные страницы, которые реально собирают трафик. Сначала оцените, есть ли у архива уникальный смысл. Если нет — закрывайте. Если есть — улучшайте, а не прячьте.
Редиректы сделали через плагин и получили цепочку
Плагины редиректов удобны, но при массовых правилах легко получить цепочку URL A → URL B → URL C. Это ухудшает обход и иногда ломает canonical. Для постоянных правил лучше серверный редирект, а плагин оставить для точечных случаев.
Безопасность и производительность: что не стоит делать
Не отключайте индексацию на уровне всего сайта без причины. Иногда в попытке быстро убрать дубли ставят глобальный noindex на все страницы, а потом неделями ищут, почему сайт выпал из поиска. Также не закрывайте CSS и JS в robots.txt, если это мешает отрисовке страниц: поисковик должен видеть страницу так же, как пользователь.
Если вам нужно быстро навести порядок в дублях, удобнее использовать SEO-плагин с нормальной настройкой мета-роботов и каноникализации. Например, в Clearfy Pro есть инструменты для чистки сайта и удаления части дублей, но даже с плагином всё равно стоит понимать, какие URL вы закрываете и зачем. Автоматизация помогает, когда правила уже продуманы, а не вместо них.
Практический ориентир простой: сначала исправьте структуру URL и редиректы, потом закройте ненужные архивы, затем проверьте canonical и только после этого трогайте robots.txt. В такой последовательности меньше шансов случайно убрать из поиска нужные страницы.