Дубли в WordPress чаще всего появляются не из-за «плохого SEO», а из-за стандартного поведения CMS: одна и та же запись доступна по нескольким адресам, архивы создают копии контента, а attachment-страницы и параметры URL добавляют лишние варианты. Если это не контролировать, поисковик тратит обход на мусорные страницы, а канонический URL может ранжироваться слабее, чем должен.
Ниже — рабочий сценарий: как найти источники дублей, что закрывать редиректом, что — noindex, а что лучше вообще убрать на уровне темы или плагина. Без абстракций, только то, что реально проверяется в админке и в коде.
Какие дубли в WordPress встречаются чаще всего
Перед правками важно понять, что именно вы считаете дублем. Не все похожие страницы нужно удалять. Иногда это нормальные архивы, иногда — технические копии, которые не должны индексироваться.
- Attachment-страницы — отдельные страницы вложений с тонким или пустым контентом.
- Архивы рубрик и меток — часто дублируют смысл записей, если на них выводятся полные тексты.
- Страницы пагинации — сами по себе не ошибка, но могут плодить слабые копии.
- URL с параметрами — сортировки, фильтры, UTM, служебные параметры.
- Дубли из-за канонических ошибок — когда
rel=canonicalуказывает не туда или отсутствует.
Когда дубль — это действительно проблема
Если у двух URL одинаковый или почти одинаковый контент, а в индексе остаются оба адреса, это уже техническая задача. Особенно если один URL получает внешние ссылки, а другой — внутренние. В таком случае поисковик может выбрать не тот вариант, который вы хотите видеть в выдаче.
Диагностика: как быстро найти источники дублей
Начинать лучше не с плагинов, а с проверки того, какие адреса уже доступны и индексируются. Для этого достаточно открыть несколько типовых URL и сравнить ответ сервера, канонический адрес и заголовки.
Что проверить вручную
- Открывается ли запись по
/post-name/,/category/post-name/или другим альтернативным путям. - Есть ли у attachment-страниц отдельный HTML-ответ вместо редиректа.
- Не создают ли архивы автора, меток и дат пустые или почти пустые страницы.
- Не индексируются ли страницы поиска по сайту и служебные URL.
- Совпадает ли
canonicalс основным адресом записи.
Если есть доступ к консоли, полезно быстро посмотреть заголовки ответа:
curl -I https://example.com/sample-post/И отдельно проверить attachment-страницу или URL с параметром. Если там не 301 на основной адрес, а полноценная страница, это кандидат на исправление.
Как искать дубли через Google Search Console
В отчете по индексированию и проверке URL обычно видно, какие варианты страницы выбраны как канонические, а какие — как дубли. Это особенно полезно для записей, которые доступны по нескольким адресам из-за старых ссылок, плагинов или нестандартных правил перезаписи.
Смотрите не только на статус, но и на причину исключения. Если Search Console пишет, что страница «другая каноническая страница», это не всегда ошибка. Ошибка начинается там, где канонический URL выбран не тот, который вы считаете основным.
Пошаговое решение: что закрывать редиректом, а что noindex
Универсального рецепта нет. Для разных типов дублей лучше использовать разные способы. Редирект убирает лишний URL из обращения. noindex оставляет страницу доступной, но не пускает ее в индекс. А canonical подсказывает поисковику предпочтительный адрес, но не заменяет редирект, если дубль уже живет своей жизнью.
| Сценарий | Что делать | Компромисс |
|---|---|---|
| Attachment-страницы | 301 на родительскую запись или noindex | Редирект надежнее, но требует аккуратной логики |
| Архивы меток без пользы | noindex и, при необходимости, отключение вывода | Страница остается для навигации, но не ранжируется |
| Параметры URL | каноникал на чистый адрес, иногда редирект | Нужно не сломать фильтры и сортировки |
| Дубли записей по нескольким путям | 301 на основной URL | Самый чистый вариант для SEO |
1. Уберите attachment-страницы из индекса
Если у вас есть медиафайлы, WordPress может отдавать для них отдельные страницы вложений. Для большинства сайтов это лишний слой дублей. Самый практичный вариант — редиректить attachment-страницу на родительскую запись, если она есть.
add_action('template_redirect', function () {
if (!is_attachment()) {
return;
}
$parent_id = wp_get_post_parent_id(get_queried_object_id());
if ($parent_id) {
wp_safe_redirect(get_permalink($parent_id), 301);
exit;
}
wp_safe_redirect(home_url('/'), 301);
exit;
});Этот код лучше добавлять в мини-плагин или в functions.php дочерней темы, если вы понимаете риски обновлений. Для сайта с большим количеством медиа это обычно дает более предсказуемый результат, чем просто скрывать страницы от индексации.
2. Закройте архивы, которые не несут ценности
Если рубрики и метки у вас используются формально, а на архивных страницах мало уникального текста, их можно перевести в noindex. Делать это лучше через SEO-плагин или через фильтры темы, если у вас уже есть своя логика вывода мета-тегов.
Например, в Yoast SEO можно управлять индексированием архивов через настройки, а не кодом. Если нужен именно код, то безопаснее не пытаться вручную собирать все мета-теги, а использовать готовую SEO-логику плагина. Самодельные решения часто ломаются после обновлений.
3. Приведите canonical к одному варианту
Если страница доступна по нескольким URL, canonical должен указывать на один основной адрес. В WordPress это обычно делает SEO-плагин, но иногда тема или кастомный шаблон подменяют тег. Тогда нужно проверить, не выводится ли второй canonical в <head>.
Проверка простая: откройте исходный код страницы и найдите rel="canonical". Если тегов два, или canonical ведет на URL с параметрами, это нужно исправлять в теме или плагине, который добавляет лишний вывод.
Если дубли создаются кодом темы или плагина
Иногда проблема не в WordPress как таковом, а в шаблоне архива, который выводит полный текст записи на нескольких страницах. Тогда даже правильные URL начинают выглядеть как копии друг друга. В такой ситуации лучше не лечить последствия, а изменить шаблон.
Проверьте, не выводится ли полный контент в архивах
На страницах рубрик, меток и авторов безопаснее выводить анонс, а не полный текст. Иначе архив становится почти точной копией записи. Для темы это решается через the_excerpt() вместо the_content() в архивных шаблонах.
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<article>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<div class="entry-summary">
<?php the_excerpt(); ?>
</div>
</article>
<?php endwhile; endif; ?>Это не «магия SEO», а нормальная гигиена шаблонов. Архивы должны помогать навигации, а не копировать основной контент.
Проверка результата после внедрения
После правок не ограничивайтесь открытием страницы в браузере. Нужно проверить, что сервер отдает нужный код ответа, canonical указывает на правильный адрес, а дубль не остается доступным по старому URL.
- Откройте старый URL и убедитесь, что он дает 301, а не 200.
- Проверьте исходный код основной страницы: canonical должен вести на чистый URL.
- В Search Console отправьте проверку URL и посмотрите, как Google видит канонический адрес.
- Если использовали noindex, убедитесь, что мета-тег реально присутствует на странице.
- Проверьте sitemap: туда не должны попадать страницы, которые вы закрыли от индексации.
Для быстрой серверной проверки удобно смотреть заголовки:
curl -I https://example.com/old-attachment-url/
curl -I https://example.com/category/sample-post/Если старый адрес все еще отвечает 200, значит правило редиректа не сработало или его перебивает другой плагин.
Частые ошибки и как их исправить
Ставят noindex вместо редиректа там, где нужен 301
Это частая ошибка для attachment-страниц и явных дублей записей. noindex не убирает URL из обхода и не решает проблему копии как таковой. Если есть очевидный основной адрес, лучше редирект.
Закрывают все архивы подряд
Иногда после установки SEO-плагина без разбора закрывают рубрики, метки, автора и дату. В результате сайт теряет полезные посадочные страницы и внутреннюю перелинковку. Закрывать нужно только те архивы, которые реально не несут ценности.
Оставляют два canonical одновременно
Такое бывает, когда SEO-плагин и тема оба выводят canonical. Поисковик это не любит, а браузер просто покажет первый попавшийся тег. Проверьте <head> и отключите дублирующий вывод в одном из источников.
Редиректят все URL с параметрами без разбора
Это ломает фильтры, сортировки и некоторые формы. Если на сайте есть рабочие параметры, не рубите их общим правилом. Сначала определите, какие параметры действительно создают мусорные копии, а какие нужны пользователю.
Практические советы по безопасности и производительности
Любая логика редиректов и фильтров должна быть минимальной по объему и предсказуемой. Не стоит вешать тяжелые запросы к базе на каждый просмотр страницы, если можно обойтись штатными функциями WordPress.
- Добавляйте код в дочернюю тему или мини-плагин, а не в родительскую тему.
- Не правьте ядро WordPress и не меняйте системные файлы ради редиректов.
- После внедрения проверьте кеш страниц: старые версии могут продолжать отдавать прежний HTML.
- Если используете плагин кеширования, очистите кеш после изменения canonical и редиректов.
- Не закрывайте важные страницы от индексации только потому, что они похожи на другие. Сначала проверьте, можно ли решить задачу шаблоном или 301.
Если вам нужно системно навести порядок в дублях, архивных страницах и служебных URL, удобно сочетать точечные правки в теме с SEO-плагином. Например, в Clearfy Pro есть инструменты для чистки лишнего технического мусора и управления частью SEO-настроек, но даже в этом случае логику дублей стоит проверять вручную, а не полагаться на «автоматически все исправит».
В итоге рабочая схема обычно такая: явные дубли — редиректом, слабые архивы — noindex, шаблонные копии — правкой темы, а спорные случаи — через проверку Search Console и исходного HTML. Это медленнее, чем поставить один плагин, но зато не ломает сайт на ровном месте.