Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелких настроек: архивы тегов, пагинация, версии с ?replytocom, страницы с параметрами, одинаковые записи в категориях и теги, а иногда — из-за темы или SEO-плагина, который генерирует лишние URL. В итоге поисковик видит несколько адресов с одинаковым или почти одинаковым контентом и начинает выбирать канонический URL не так, как вы ожидаете.
Ниже — рабочий сценарий: как найти источник дублей, что закрывать от индексации, что склеивать через canonical, а что лучше не трогать вообще.
Как понять, что проблема именно в дублях
Сначала не меняйте настройки наугад. Проверьте, какие URL уже попали в индекс и какие из них конкурируют между собой. Для этого достаточно трех источников: Google Search Console, поиск по сайту и исходный код страницы.
Что смотреть в первую очередь
- В Search Console откройте отчеты по страницам и проверьте, нет ли групп URL с одинаковым заголовком и сниппетом.
- Посмотрите, не индексируются ли архивы тегов, авторов, дат и страницы пагинации.
- Проверьте, не появляются ли дубли с параметрами вроде
?amp,?replytocom,?utm_*,?sort=. - Сравните
<link rel="canonical">на основной странице и на ее дубле.
Если canonical указывает на саму страницу, а в индексе сидят ее копии с параметрами, значит проблема не в canonical, а в том, что эти URL вообще доступны для обхода и не закрыты от индексации.
Откуда в WordPress берутся дубли
Чаще всего источник один из следующих:
- архивы рубрик, тегов и авторов дублируют смысл страниц записей;
- пагинация архивов создает много похожих URL;
- страницы с GET-параметрами открываются как отдельные адреса;
- одна и та же запись доступна через несколько таксономий;
- тема выводит одинаковые блоки контента на разных шаблонах;
- SEO-плагин не настроен и оставляет в индексе служебные архивы.
Если сайт небольшой, проблему часто решает аккуратная настройка индексации. Если сайт контентный и большой, лучше сначала убрать генерацию мусорных URL, а потом уже чистить индекс.
Пошаговое решение: что закрывать, что оставлять
Ниже — практичный порядок действий. Он не зависит от конкретной темы, но требует доступа к админке и, желательно, к файлам сайта.
1. Оставьте в индексе только полезные архивы
Если рубрики у вас реально помогают навигации и имеют уникальные описания, их можно оставить. Теги, архивы авторов и даты на большинстве сайтов лучше закрыть от индексации или отключить совсем, если они не несут отдельной ценности.
В SEO-плагинах это обычно делается настройками архивов. Если вы используете Clearfy Pro, там есть инструменты для чистки дублей и отключения лишних архивов. Это не магия, а просто быстрый способ убрать то, что WordPress создает по умолчанию, но что не нужно в поиске.
Если делаете вручную, ориентируйтесь на принцип: индексируются только страницы, которые могут дать отдельный поисковый спрос или полезную навигацию.
2. Закройте служебные и параметрические URL
Страницы с параметрами не должны становиться самостоятельными посадочными, если это не предусмотрено специально. Для типовых параметров лучше использовать canonical на чистый URL и не давать им индексироваться.
<?php
add_action('wp_head', function () {
if (is_singular()) {
global $post;
if ($post instanceof WP_Post) {
echo '<link rel="canonical" href="' . esc_url(get_permalink($post)) . '" />' . "\n";
}
}
}, 1);Этот пример не заменяет SEO-плагин, но показывает принцип: canonical должен указывать на основную версию страницы. Если у вас уже стоит SEO-плагин, не дублируйте его логику вручную без необходимости.
3. Уберите дубли из архивов тегов и авторов
Если теги используются как мусорная таксономия, они часто создают больше вреда, чем пользы. На таких сайтах лучше либо отключить их индексацию, либо сократить количество тегов до реально осмысленных.
Проверка простая: откройте архив тега и спросите себя, есть ли у него уникальный поисковый смысл. Если там просто список тех же записей, что и в рубрике, индексировать его не нужно.
4. Ограничьте пагинацию там, где она не нужна
Пагинация сама по себе не ошибка. Ошибка — когда в индекс попадают десятки страниц архивов без ценности. Для больших блогов это особенно заметно: /page/2/, /page/3/ и дальше начинают конкурировать между собой и с основной страницей архива.
Если архив не несет самостоятельной пользы на второй и следующих страницах, их можно оставить доступными для обхода, но не продвигать в индекс. Важно не ломать навигацию для пользователя.
Когда лучше править кодом, а когда — плагином
Если задача типовая, плагин быстрее и безопаснее. Если у вас нестандартная тема или кастомные типы записей, иногда проще точечно поправить шаблоны и фильтры.
| Подход | Когда подходит | Минус |
|---|---|---|
| SEO-плагин | Нужно быстро закрыть архивы, задать canonical, убрать служебные страницы | Может быть лишняя логика и конфликт с темой |
| Код в теме/плагине | Нужна точечная настройка для конкретного типа контента | Требует поддержки после обновлений |
| Комбинированный вариант | Сайт уже в работе, есть и архивы, и параметры, и старые URL | Нужна аккуратная проверка, чтобы не закрыть полезные страницы |
Пример: закрыть архивы авторов и тегов от индексации
Если вы понимаете, что эти архивы не нужны в поиске, можно добавить noindex на уровне шаблона. Но делать это лучше через SEO-плагин или его фильтры, а не через хаотичную правку темы. Ниже — пример для случая, когда вы управляете мета-тегами сами.
<?php
add_action('wp_head', function () {
if (is_tag() || is_author()) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
}, 1);Этот код не удаляет архивы из сайта, а только просит поисковик не индексировать их. Пользователи по-прежнему смогут открывать такие страницы, если они нужны для навигации.
Проверка результата после внедрения
После изменений не ограничивайтесь визуальной проверкой. Нужно убедиться, что поисковик видит именно то, что вы задумали.
- Откройте исходный код страницы и проверьте canonical.
- Проверьте, что на закрытых архивах появился
noindex,follow, если вы его задавали. - В Search Console отправьте на переобход несколько основных URL.
- Проверьте, не остались ли в индексе старые параметрические адреса.
- Сравните количество страниц в индексе до и после, но не делайте выводы по одному дню: поисковику нужно время на переобход.
Если у вас есть доступ к серверным логам или аналитике, посмотрите, не упали ли важные страницы из органики после закрытия архивов. Это главный контрольный пункт: убрать дубли можно быстро, а вот потерять полезный трафик из-за слишком агрессивной чистки — легко.
Частые ошибки и как их исправить
Закрыли слишком много страниц
Частая ошибка — поставить noindex на все архивы подряд и потом обнаружить, что полезные рубрики перестали участвовать в поиске. Исправление простое: вернуть индексируемость только тем архивам, которые имеют отдельную ценность и уникальный контент.
Поменяли canonical, но не убрали источник дубля
Canonical помогает, но не решает проблему, если дубль продолжает активно генерироваться и обходиться. Нужно либо закрыть параметр, либо убрать его генерацию, либо настроить редирект на чистый URL.
Редиректом сломали навигацию
Иногда пытаются все архивы и параметры отправить на главную. Это плохая идея: пользователь и поисковик теряют контекст. Редирект нужен только там, где есть очевидная замена страницы, а не для всех похожих URL подряд.
Не проверили тему и плагины
Некоторые темы выводят одинаковые блоки на разных шаблонах или создают лишние архивы через собственные настройки. После любого изменения проверьте исходный код и список доступных URL. Если дубли создает тема, а не WordPress, править нужно именно ее шаблоны.
Что делать, если дублей много и сайт уже в индексе
В этом случае не пытайтесь чистить все за один проход. Сначала определите приоритет:
- убрать генерацию новых дублей;
- закрыть от индексации служебные архивы;
- привести canonical к одной основной версии;
- при необходимости настроить 301-редиректы для старых и бесполезных URL;
- отправить на переобход только ключевые страницы.
Если нужен более системный подход к чистке дублей, служебных архивов и технического мусора, имеет смысл смотреть в сторону инструментов, которые закрывают это на уровне WordPress без ручной правки каждого шаблона. Но даже тогда сначала проверьте, какие URL реально нужны вашему сайту, а какие просто создают шум.
После внедрения полезно еще раз пройтись по сайту глазами пользователя: если архив, тег или страница с параметром не помогает навигации и не имеет отдельного спроса, скорее всего, ему не место в индексе.