Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелочей: одна и та же запись доступна по нескольким адресам, архивы индексируются вместе с основным контентом, пагинация и параметры сортировки создают лишние URL. В итоге поисковик тратит обход на мусорные страницы, а канонический адрес может ранжироваться хуже, чем должен.
Ниже разберём не абстрактную «SEO-оптимизацию», а конкретный сценарий: как найти источники дублей, что закрывать, что оставлять в индексе и как проверить, что после правок WordPress действительно отдаёт нужные сигналы.
Как понять, что в WordPress есть дубли страниц
Сначала нужно не править шаблоны вслепую, а понять, какие именно URL дублируются. На практике чаще всего всплывают такие случаи:
- одна запись открывается и с
/category/, и без него через внутренние ссылки; - архивы тегов, авторов и дат индексируются, хотя не несут самостоятельной ценности;
- страницы пагинации попадают в индекс без необходимости;
- страницы с параметрами
?replytocom=,?utm_,?sort=и похожими хвостами создают лишние адреса; - главная, рубрики и архивы имеют одинаковые title и description;
- в теме есть несколько шаблонов вывода одного и того же материала.
Проверка начинается с простых инструментов: отчёт «Страницы» в Google Search Console, поиск по сайту через оператор site:, просмотр исходного кода и заголовка link rel="canonical". Если у одной и той же записи встречаются разные URL, а canonical указывает не туда или отсутствует, это уже рабочая точка входа.
Что смотреть в исходном коде
Откройте страницу и проверьте три вещи: canonical, robots meta и заголовок страницы. В WordPress canonical обычно выводит ядро или SEO-плагин. Если canonical указывает на URL с параметром, на архивную версию или на неосновной путь, поисковик может выбрать не тот адрес.
<link rel="canonical" href="https://example.com/post-slug/" />Если вместо этого вы видите что-то вроде https://example.com/post-slug/?replytocom=12 или каноникал на рубрику, это уже ошибка, которую нужно исправлять в шаблоне, плагине или настройках.
Какие дубли в WordPress стоит убирать в первую очередь
Не все повторяющиеся URL одинаково вредны. Сначала имеет смысл убрать то, что реально размывает индексацию.
| Источник дубля | Что делать | Компромисс |
|---|---|---|
| Архивы тегов и авторов | Закрыть от индексации или оставить только при реальной пользе | Меньше страниц в индексе, но чище структура |
| Параметры URL | Настроить canonical и, где нужно, редиректы | Нужно аккуратно проверить фильтры и сортировки |
| Пагинация архивов | Оставить доступной, но не плодить лишние мета-теги | Страницы могут остаться в обходе, но не обязаны индексироваться |
| Дубли записей через категории и архивы | Сделать один основной URL и везде вести на него | Потребуется ревизия внутренних ссылок |
Если у сайта небольшой объём контента, часто достаточно убрать из индекса теги, даты и служебные архивы. Если сайт большой, нужно ещё проверить фильтры, сортировки, поиск по сайту и все URL с GET-параметрами.
Пошаговое решение: как убрать дубли без поломки сайта
1. Определите, какой URL должен быть основным
Для каждой сущности должен быть один канонический адрес. Для записи это обычно постоянная ссылка поста. Для рубрики — её архив. Для страницы — сам URL страницы. Всё остальное должно либо редиректить на основной адрес, либо явно указывать canonical.
Если у вас несколько плагинов SEO одновременно, сначала оставьте один. Два плагина, которые оба пишут canonical и robots meta, почти гарантированно создают конфликт.
2. Закройте служебные архивы от индексации
Если теги, авторы или даты не дают пользователю самостоятельной ценности, их лучше закрыть от индексации в SEO-плагине или через настройки темы. Это не удаляет страницы, а только убирает их из поисковой выдачи.
Если нужно сделать это кодом, можно добавить noindex для архивов автора и дат через фильтр wp_robots. Это штатный механизм WordPress, а не выдуманный хук.
<?php
add_filter( 'wp_robots', function( $robots ) {
if ( is_author() || is_date() ) {
$robots['noindex'] = true;
}
return $robots;
} );Такой подход полезен, когда вы не хотите тащить лишнюю логику в SEO-плагин или когда нужно точечно закрыть только часть архивов.
3. Уберите параметрические дубли
Если дубли появляются из-за параметров в URL, сначала проверьте, действительно ли они нужны. Параметры utm_ обычно не создают отдельный контент и не должны становиться отдельными страницами. А вот параметры сортировки, фильтров или комментариев могут менять выдачу.
Для параметров, которые не должны индексироваться, важны две вещи: canonical на чистый URL и отсутствие внутренних ссылок с параметрами там, где они не нужны. Если параметр нужен только для аналитики, не используйте его в постоянных ссылках внутри сайта.
4. Проверьте редиректы и структуру постоянных ссылок
Если у вас включены и /post-name/, и старые URL, и дубли через категории, нужно привести структуру к одному варианту. Смена структуры постоянных ссылок без редиректов почти всегда создаёт новые ошибки 404 и цепочки редиректов.
Для проверки редиректа удобно использовать curl:
curl -I https://example.com/old-url/В ответе должен быть один понятный переход на основной адрес, а не цепочка из нескольких 301 и 302.
Когда достаточно плагина, а когда нужен код
Если задача типовая, проще и безопаснее решить её через SEO-плагин или инструмент чистки сайта. Если же дубли возникают из-за темы, кастомных архивов или нестандартных параметров, код даёт больше контроля.
| Подход | Когда подходит | Минус |
|---|---|---|
| SEO-плагин | Нужно быстро закрыть архивы, задать canonical, noindex | Может конфликтовать с темой или другим SEO-плагином |
| Код в functions.php или мини-плагине | Нужна точечная логика для конкретных архивов и шаблонов | Требует тестирования после обновлений темы |
| Правка шаблонов темы | Проблема в разметке, canonical или заголовках | Легко сломать при обновлении, если править напрямую |
Если вы используете набор инструментов для чистки сайта и SEO, имеет смысл смотреть в сторону решений, где можно отключать лишние архивы, управлять дублями и служебными страницами из одного места. Например, у Clearfy Pro есть функции, которые помогают убрать часть технического мусора без ручной правки шаблонов: https://wpshop.ru/plugins/clearfy.
Проверка результата после внедрения
После правок не ограничивайтесь открытием пары страниц в браузере. Нужно проверить именно сигналы, которые видит поисковик.
- в исходном коде у основных страниц стоит правильный canonical;
- служебные архивы отдают
noindex, если вы их закрывали; - старые URL редиректят на основной адрес одним переходом;
- в Search Console уменьшается число дублей и страниц с выбранным Google canonical, отличным от пользовательского;
- внутренние ссылки ведут на чистые URL без лишних параметров.
Отдельно проверьте мобильную версию и кеш. Иногда canonical и robots meta в HTML правильные, но кеш отдаёт старую версию страницы. В таком случае нужно очистить серверный кеш, кеш плагина и, если используется CDN, его тоже.
Мини-проверка через браузер и консоль
Откройте страницу, посмотрите исходный код и найдите canonical. Затем проверьте HTTP-ответ:
curl -I https://example.com/post-slug/Если страница должна быть закрыта от индексации, в HTML должен быть noindex, а не только визуальное скрытие блока через CSS. Поисковик CSS не считает сигналом для индексации.
Частые ошибки и как их исправить
Закрыли не те страницы
Иногда под noindex попадают полезные рубрики или страницы, которые реально приводят трафик. Причина обычно в слишком широком условии: например, закрыли все архивы вместо только авторских и датированных. Исправление простое: сузить условие и перепроверить robots meta на каждой группе страниц.
Canonical указывает на страницу с параметром
Это часто случается после установки плагина фильтров или при кастомной логике в теме. Нужно найти место, где формируется canonical, и вернуть туда чистый URL без параметров. Если canonical генерирует SEO-плагин, проверьте его настройки для архивов и страниц с параметрами.
Редиректы сделаны цепочкой
Когда старый URL сначала ведёт на промежуточный адрес, а потом уже на основной, поисковик тратит лишние обходы. Лучше сделать один прямой 301. Если редиректов много, проверьте правила в .htaccess, конфигурацию nginx и плагины редиректов одновременно.
Дубли остались из-за внутренней перелинковки
Даже если canonical правильный, внутренние ссылки на старые или параметрические URL продолжают плодить мусор. Проверьте меню, хлебные крошки, блоки похожих записей, виджеты и шаблоны карточек. Часто проблема не в SEO, а в том, что тема генерирует ссылки на архивную или неполную версию адреса.
Практические советы по безопасности и производительности
Чистка дублей полезна не только для индексации. Чем меньше лишних страниц и параметров, тем меньше нагрузка на обход и кеш. Но важно не перегнуть:
- не удаляйте архивы, если они реально используются как навигация;
- не ставьте несколько SEO-плагинов одновременно;
- не правьте шаблоны темы напрямую, если можно вынести логику в дочернюю тему или мини-плагин;
- после изменений очищайте кеш страницы, объектный кеш и CDN;
- проверяйте, не ломают ли новые правила RSS, REST API и служебные страницы.
Если сайт часто меняется, полезно держать отдельный список правил: что закрыто от индексации, какие архивы редиректятся, какие параметры разрешены. Это экономит время при обновлениях темы и плагинов, потому что вы быстро видите, где может появиться новый дубль.
В итоге задача сводится не к «убрать все дубли», а к тому, чтобы у каждой страницы был один понятный адрес, а поисковик не тратил обход на технический шум. В WordPress это решается комбинацией настроек, аккуратных редиректов и проверки canonical — без лишних экспериментов и без правки ядра.