Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелких настроек: архивы тегов, пагинация, параметры в URL, одинаковые записи в нескольких таксономиях, страницы автора, версии с www и без него. В результате поисковик видит несколько адресов с одинаковым или почти одинаковым содержимым и начинает выбирать канонический URL сам. Это уже не та ситуация, где можно надеяться на «само пройдет».
Ниже — рабочий сценарий: как найти источник дублей, что можно закрыть от индексации, где нужен rel="canonical", а где лучше убрать саму генерацию лишних URL. Без лишней теории, с проверкой результата после каждого шага.
Как понять, что проблема именно в дублях
Сначала полезно отделить дубли от похожих страниц. Если в индексе есть несколько URL с одинаковым title, одинаковым H1 или почти одинаковым текстом, это уже повод проверить структуру сайта. На WordPress чаще всего встречаются такие сценарии:
- одна и та же запись доступна через архив рубрики, тег и автора;
- страницы пагинации индексируются как отдельные посадочные;
- в индексе есть URL с параметрами сортировки, фильтрации или UTM;
- сайт открывается и по
http, и поhttps, либо сwwwи без него; - в поиске есть служебные страницы вложений изображений, которые дублируют медиафайл или запись;
- один и тот же контент размножается через архивы таксономий и страницы автора.
Диагностика без плагинов и «магии»
Начните с простых проверок. Откройте несколько подозрительных URL и сравните:
- заголовок страницы в браузере;
- мета-тег
canonicalв исходном коде; - ответ сервера для URL с параметрами;
- наличие редиректа на основной адрес.
Если у вас есть доступ к консоли, удобно быстро проверить заголовки ответа:
curl -I https://example.com/sample-post/?utm_source=testИщите три вещи: редирект на чистый URL, отсутствие 200 OK для мусорных параметров и корректный canonical на основной адрес. Если страница с параметром открывается как полноценная и индексируемая, это уже источник дубля.
Что делать в первую очередь: сравнение подходов
| Подход | Когда подходит | Минус |
|---|---|---|
| Плагин для SEO/чистки дублей | Если нужно быстро закрыть архивы, теги, вложения и служебные страницы | Часть логики остается скрытой, важно не включить лишние запреты |
| Код в теме или мини-плагине | Если нужен точечный контроль над canonical, редиректами и параметрами | Нужно тестировать после обновлений темы и ядра |
| Серверные правила | Если дубли создают параметры, http/https или www/без www | Ошибки в конфиге могут сломать доступ к сайту |
На практике лучше комбинировать: сервером убрать базовые дубли, кодом — точечные случаи, а SEO-плагином — закрыть служебные архивы и вложения. Если нужен инструмент для чистки дублей и технической оптимизации, у WPShop есть Clearfy Pro: https://wpshop.ru/plugins/clearfy.
Пошаговое решение
1. Уберите технические дубли на уровне URL
Если сайт доступен по нескольким вариантам домена или протокола, сначала оставьте один основной адрес и настройте редирект 301. Это не только про SEO, но и про консистентность ссылок внутри сайта.
# Пример для Apache: редирект на HTTPS и без www
RewriteEngine On
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [L,R=301]После этого проверьте, что старые варианты действительно отдают 301, а не 200. Если редирект цепочкой ведет через два-три шага, это тоже стоит исправить.
2. Закройте служебные страницы, которые не должны индексироваться
В WordPress часто не нужны в индексе:
- страницы вложений изображений;
- архивы автора на небольших проектах;
- страницы поиска по сайту;
- служебные страницы с параметрами сортировки и фильтрации;
- теги, если они дублируют рубрики и не несут отдельной ценности.
Если вы делаете это кодом, не удаляйте сами страницы — достаточно изменить поведение индексации. Для вложений, например, можно перенаправлять attachment page на сам файл или родительскую запись:
add_action('template_redirect', function () {
if (is_attachment()) {
$parent_id = get_post_field('post_parent', get_queried_object_id());
if ($parent_id) {
wp_redirect(get_permalink($parent_id), 301);
exit;
}
$file = wp_get_attachment_url(get_queried_object_id());
if ($file) {
wp_redirect($file, 301);
exit;
}
}
});Этот вариант лучше, чем оставлять attachment page в индексе без смысла. Но если у вас медиа-архив используется как отдельный контентный раздел, редирект нужно оценивать отдельно.
3. Добавьте canonical там, где URL отличаются только параметрами
Если дубли появляются из-за параметров в URL, canonical помогает поисковику понять основной адрес. Но canonical не лечит все случаи: если страница с параметром содержит уникальный контент, нужно решать вопрос на уровне маршрутизации или редиректа.
Для точечной правки можно использовать фильтр wpseo_canonical в Yoast SEO или аналогичный механизм в вашем SEO-плагине. Если плагина нет, можно влиять на canonical через wp_head, но делать это нужно аккуратно, чтобы не вывести два canonical одновременно.
add_filter('wpseo_canonical', function ($canonical) {
if (is_singular()) {
return get_permalink();
}
return $canonical;
});Если вы не используете Yoast SEO, не копируйте этот код бездумно. Сначала проверьте, какой плагин формирует canonical на сайте, иначе можно получить конфликт разметки.
4. Уберите лишние архивы из индекса
На небольшом сайте архивы тегов и авторов часто создают больше дублей, чем пользы. Но отключать их вслепую не стоит: если архив реально собирает трафик и имеет уникальную структуру, его лучше доработать, а не закрывать.
Практичный вариант — оставить архивы, но запретить индексирование там, где они не несут ценности. В SEO-плагинах это обычно настраивается без кода. Если делаете вручную, ориентируйтесь на мета robots и canonical, а не на удаление шаблонов из темы.
Проверка результата после внедрения
После изменений не ограничивайтесь визуальной проверкой. Нужно убедиться, что поисковый робот видит именно то, что вы задумали.
- Откройте несколько старых URL с параметрами и проверьте 301-редирект.
- Посмотрите исходный код страницы и убедитесь, что canonical ведет на основной адрес.
- Проверьте, что страницы вложений не индексируются как отдельные посадочные.
- Сравните URL в sitemap.xml: там не должно быть мусорных или дублирующих адресов.
- В Search Console посмотрите, не растет ли число «дубликат, выбранный пользователем не как канонический».
Если у вас есть доступ к логам сервера, полезно посмотреть, не продолжают ли боты активно ходить на старые URL. Это хороший индикатор того, что редирект работает, но старые ссылки еще живут во внешних источниках.
Частые ошибки и как их исправить
Canonical и редирект указывают на разные URL
Это одна из самых неприятных ошибок. Если редирект ведет на один адрес, а canonical — на другой, поисковик получает противоречивые сигналы. Исправление простое: выберите один основной URL и приведите к нему и редиректы, и canonical, и внутренние ссылки.
Закрыли от индексации, но не убрали генерацию дубля
Страница может быть noindex, но все равно создавать нагрузку и путаницу в обходе сайта. Если параметр или архив не нужен вообще, лучше убрать его генерацию или поставить 301 на основной адрес.
Сломали пагинацию
Иногда после жесткой чистки дублей исчезают страницы пагинации, которые нужны для обхода каталога или архива. Проверяйте не только первую страницу архива, но и вторую, третью, а также ссылки «Следующая/Предыдущая».
Удалили вложения без проверки входящих ссылок
Если на attachment page уже есть внешние ссылки или внутренние переходы, резкое удаление страницы даст 404. В таких случаях сначала ставьте редирект, а уже потом решайте, нужна ли сама страница.
Практические советы по безопасности и производительности
Чистка дублей — это не только про SEO. Чем меньше лишних URL генерирует WordPress, тем меньше мусора в логах, меньше обхода ботами и меньше шансов на неожиданные конфликты в плагинах фильтрации, кеширования и аналитики.
- Не отключайте архивы и таксономии без карты сайта и проверки трафика.
- Не ставьте несколько SEO-плагинов одновременно: canonical и robots могут начать конфликтовать.
- Если используете кеш, очищайте его после изменения редиректов и мета-тегов.
- Для массовых правок сначала делайте резервную копию базы и файла конфигурации веб-сервера.
- Проверяйте, не создают ли плагины фильтров и сортировки новые URL с параметрами.
Если задача шире и включает не только дубли, но и техническую чистку сайта, отключение лишних архивов и контроль индексации, имеет смысл смотреть в сторону инструментов, которые закрывают эти сценарии комплексно. Но даже с плагином базовая проверка через curl, исходный код и Search Console остается обязательной.