Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелких настроек: архивы тегов, страницы автора, пагинация, параметры сортировки, версии с ?replytocom, служебные URL и одинаковые записи в нескольких таксономиях. В результате поисковик видит несколько адресов с одним и тем же или почти одинаковым контентом, а сайт начинает распылять индексацию.
Ниже — рабочая схема, которая помогает не «ломать SEO», а аккуратно убрать лишнее: сначала диагностируем, потом выбираем способ закрытия, затем проверяем результат.
Как понять, что у вас именно проблема дублей
Не стоит сразу закрывать всё подряд. Сначала нужно понять, какие URL реально индексируются и какие из них конкурируют между собой. Самый быстрый способ — посмотреть отчёт по страницам в Google Search Console и сравнить адреса с одинаковыми заголовками и сниппетами. Если один и тот же материал доступен по нескольким URL, это уже повод разбираться.
Типичные источники дублей в WordPress
- архивы рубрик и тегов с одинаковыми анонсами;
- страницы автора на небольшом сайте, где один автор;
- пагинация архивов и главной;
- URL с параметрами
?replytocom,?utm_*, фильтрами и сортировкой; - страницы вложений медиафайлов;
- версии с и без слэша, http и https, www и без www;
- дубли из-за неправильного canonical в теме или плагине.
Если у вас есть доступ к серверным логам или аналитике, полезно проверить, какие URL получают трафик и какие чаще всего отдают 200 OK, хотя должны были бы редиректиться или закрываться от индексации.
Что закрывать, а что оставлять в индексе
Здесь важен не универсальный рецепт, а логика. Не все архивы нужно запрещать. Например, рубрики часто полезны для структуры сайта, а теги на маленьком блоге нередко создают только шум. Страницы автора на сайте с одним автором обычно не дают ценности, но на многопользовательском проекте могут быть полезны.
| Вариант | Когда использовать | Плюс | Минус |
|---|---|---|---|
noindex,follow | для архивов, которые нужны пользователю, но не должны ранжироваться | страница остаётся доступной для обхода | не убирает URL из обхода мгновенно |
| canonical | когда есть основной URL и его дубли с параметрами | передаёт сигнал о главной версии | не всегда спасает, если контент сильно отличается |
| редирект 301 | для явных дублей и технических вариантов URL | жёстко убирает лишний адрес | нужно аккуратно тестировать, чтобы не сломать навигацию |
| robots.txt | для служебных разделов и мусорных путей | снижает обход ненужных URL | не гарантирует удаление уже известных страниц из индекса |
Пошаговое решение: от диагностики к настройке
1. Проверьте canonical на страницах
У каждой индексируемой страницы должен быть один понятный canonical. На записи он обычно должен указывать на саму себя. Если canonical указывает на архив, главную или вообще отсутствует, поисковик может выбрать не ту версию.
Проверить можно в исходном коде страницы или через инструменты разработчика:
<link rel="canonical" href="https://example.com/primer-stati/" />Если canonical генерируется плагином SEO, не дублируйте его в теме вручную. Два разных canonical — частая причина путаницы.
2. Закройте технические архивы от индексации
Если на сайте один автор, страницы автора обычно не несут самостоятельной ценности. То же касается тегов, если они дублируют рубрики и не используются как полноценная навигация. В Yoast SEO, Rank Math и похожих плагинах это настраивается через параметры индексации архивов. Если плагина нет, можно использовать noindex на уровне шаблона или фильтров, но делать это нужно аккуратно.
Пример для темы или дочерней темы: добавить noindex для архивов автора и тегов, если они не нужны в поиске.
add_action('wp_head', function () {
if (is_author() || is_tag()) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
}, 1);Это рабочий вариант, но в реальном проекте лучше сначала проверить, не делает ли то же самое SEO-плагин. Иначе получите дублирующийся meta robots.
3. Уберите дубли с параметрами URL
Если у вас появляются URL с параметрами вроде ?replytocom или служебными фильтрами, canonical должен указывать на чистую версию страницы. Для некоторых параметров лучше использовать редирект или запрет индексации на уровне сервера, если они не нужны для пользователей и поисковиков.
Пример редиректа для ?replytocom в .htaccess для Apache:
RewriteCond %{QUERY_STRING} (^|&)replytocom=[^&]+ [NC]
RewriteRule ^ %{REQUEST_URI}? [R=301,L]После этого URL с параметром должен вести на чистую страницу без него. Если сайт работает на Nginx, правило нужно писать в конфиге сервера, а не в .htaccess.
4. Закройте вложения медиафайлов, если они не нужны
Страницы вложений часто создаются автоматически и содержат минимум полезного текста. Если у вас нет задачи индексировать отдельные страницы изображений, лучше редиректить их на сам файл или на родительскую запись.
Для этого можно использовать фильтр WordPress:
add_filter('attachment_link', function ($link, $post_id) {
$parent = wp_get_post_parent_id($post_id);
if ($parent) {
return get_permalink($parent);
}
return $link;
}, 10, 2);Это не универсальный редирект, а изменение ссылки на вложение. Если нужно именно перенаправление уже открываемых attachment-страниц, лучше делать отдельную логику через template_redirect.
5. Настройте robots.txt без лишнего фанатизма
robots.txt полезен для снижения обхода мусорных URL, но не заменяет canonical и noindex. Им имеет смысл закрывать только то, что точно не должно сканироваться: служебные каталоги, внутренние скрипты, некоторые параметры и системные пути.
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /?replytocom=
Disallow: /search/
Sitemap: https://example.com/sitemap_index.xmlЕсли у вас есть поиск по сайту, не закрывайте его вслепую, пока не убедились, что он не нужен в индексе и не приносит трафик. Иногда лучше оставить поиск доступным, но с noindex.
Как проверить, что решение сработало
После изменений не ограничивайтесь визуальной проверкой. Нужны конкретные признаки, что поисковик видит нужную версию страницы.
- в исходном коде у страницы один canonical и он указывает на правильный URL;
- для закрытых архивов есть
noindex,followили они отдают 301; - URL с параметрами редиректятся на чистую версию;
- в Search Console уменьшается число дублей и страниц с выбранным Google canonical, отличным от вашего;
- при запросе
site:example.comне всплывают старые технические адреса; - в логах сервера снижается количество обращений к мусорным URL.
Проверять лучше не в тот же день. Поисковику нужно время, чтобы переобойти страницы и пересчитать сигналы. Если через несколько недель ничего не меняется, значит, проблема не в индексации, а в том, что на сайте всё ещё есть доступные дубли без явного канонического URL.
Частые ошибки и как их исправить
Ставят noindex на всё подряд
Так делают, когда хотят «быстро убрать мусор». В итоге из индекса исчезают и полезные страницы, а внутренние ссылки теряют смысл. Исправление простое: сначала определить тип страницы, потом решать, нужен ли ей индекс, canonical или редирект.
Оставляют одновременно canonical и редирект на разные адреса
Если страница редиректится на один URL, а canonical указывает на другой, поисковик получает противоречивые сигналы. Для явного дубля лучше редирект 301, а canonical оставить на целевой странице.
Закрывают дубли только в robots.txt
Это распространённая ошибка. Robots.txt может уменьшить обход, но не всегда убирает уже известный URL из индекса. Если страница уже попала в поиск, чаще нужен noindex или 301.
Дублируют логику SEO-плагина в теме
Если плагин уже генерирует canonical и meta robots, не добавляйте те же теги вручную. Иначе получите две версии мета-тегов, а это хуже, чем отсутствие части настроек.
Практические советы по безопасности и производительности
Чистка дублей влияет не только на SEO, но и на нагрузку. Чем меньше мусорных URL обходят боты и пользователи, тем меньше лишних запросов к базе и шаблонам. Особенно это заметно на сайтах с большим количеством архивов и параметров.
- не открывайте в индексацию архивы, которые не обновляются и не дают трафик;
- проверяйте, не создаёт ли тема отдельные шаблоны для вложений, авторов и тегов без необходимости;
- если используете плагин для SEO и чистки дублей, убедитесь, что он не конфликтует с темой;
- после изменений очистите кеш страниц и CDN, иначе старые canonical и meta robots могут ещё какое-то время отдаваться посетителям.
Если нужен более системный подход к чистке дублей и служебных страниц, можно посмотреть Clearfy Pro. Но даже с плагином полезно понимать, какие именно URL вы закрываете и почему — иначе легко спрятать не мусор, а важные страницы.
Самая надёжная схема для WordPress обычно выглядит так: явные дубли — редиректом, технические архивы — noindex,follow, служебные пути — через robots.txt, а для важных страниц — корректный canonical без конфликтов с темой и SEO-плагином.