На WordPress дубли чаще всего появляются не из-за “плохого SEO”, а из-за обычной механики сайта: фильтры, сортировки, UTM-метки, пагинация, поиск по сайту, служебные параметры в URL. В итоге одна и та же страница доступна по нескольким адресам, а поисковик видит это как набор похожих документов. Если не разрулить ситуацию, в индексе начинают жить лишние URL, а канонический адрес получает меньше веса.
Ниже — рабочая схема, которая помогает не путать robots.txt, noindex и rel="canonical", и не ломать индексацию нужных страниц.
Когда проблема действительно есть
Сначала стоит убедиться, что речь именно о дублях, а не о нормальной пагинации или отдельной посадочной странице. Типичный сценарий: у записи или рубрики есть несколько версий URL из-за параметров, например ?utm_source=..., ?replytocom=..., ?s=..., ?orderby=.... Иногда к этому добавляются страницы фильтров, которые генерируются плагином или темой.
Что проверить в первую очередь
- в Google Search Console есть отчеты по страницам с дублирующимся, выбранным не вами canonical;
- в выдаче встречаются URL с параметрами вместо чистого адреса;
- одна и та же страница открывается по разным адресам и отдает одинаковый контент;
- в логах или аналитике видно много заходов на URL с UTM и служебными параметрами;
- в исходном коде canonical указывает не на основной URL, а на вариант с параметром.
Если параметр меняет контент осмысленно, например сортировку каталога или фильтр, закрывать его вслепую нельзя. Если параметр не влияет на содержание страницы, его обычно нужно либо не индексировать, либо вообще не пускать в индекс.
Диагностика: где именно рождаются дубли
У WordPress есть несколько источников дублей, и у каждого свой способ лечения. Удобнее сначала понять источник, а потом уже выбирать инструмент.
| Источник дубля | Что делать | Когда не трогать |
|---|---|---|
| UTM-метки и рекламные параметры | canonical на чистый URL, при необходимости закрыть от индексации | почти всегда можно не индексировать |
Поиск по сайту ?s= | обычно noindex и исключение из sitemap | если поиск нужен только пользователю |
| Сортировка и фильтры | решать отдельно: canonical, noindex или запрет индексации | если фильтр — полноценная посадочная страница |
| Пагинация | не закрывать бездумно, проверить логику шаблона | страницы 2+ часто нужны для обхода |
Если у вас стоит SEO-плагин, сначала проверьте, не генерирует ли он canonical автоматически. Иногда проблема не в WordPress, а в том, что тема или плагин выводит свой canonical поверх нормального.
Пошаговое решение
1. Приведите canonical к чистому URL
Если страница открыта с параметром, canonical должен указывать на основной адрес без мусора. Для большинства случаев этого достаточно, чтобы поисковик понял, какую версию считать основной.
<link rel="canonical" href="https://example.com/page/" />Если canonical уже выводится, но с параметрами, проверьте тему и SEO-плагин. Часто причина в кастомном коде, который берет home_url( $_SERVER['REQUEST_URI'] ) без очистки query string. Это плохая практика: canonical должен быть стабильным и предсказуемым.
2. Для служебных параметров добавьте noindex через WordPress
Если параметр не нужен в индексе, можно отдать для таких страниц noindex,follow. Это не замена canonical, а дополнительный сигнал. Для WordPress удобно сделать это через фильтр wp_robots.
<?php
add_filter( 'wp_robots', function( array $robots ) {
$params = array( 'utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'replytocom' );
foreach ( $params as $param ) {
if ( isset( $_GET[ $param ] ) ) {
$robots['noindex'] = true;
$robots['follow'] = true;
break;
}
}
return $robots;
} );Этот вариант работает аккуратно: пользователь попадает на страницу, поисковик видит запрет на индексацию, а ссылки на странице не теряют смысл. Но не используйте его для страниц, которые должны ранжироваться сами по себе.
3. Закройте мусорные параметры на уровне robots.txt только если это оправдано
robots.txt полезен для экономии краулингового бюджета, но он не удаляет URL из индекса сам по себе. Если страница уже известна поисковику, одного Disallow мало. Поэтому robots.txt — это не основное лечение дублей, а вспомогательная мера.
User-agent: *
Disallow: /*?replytocom=
Disallow: /*?utm_
Disallow: /search/
Такой файл может помочь сократить обход мусорных URL, но не заменяет canonical и noindex. Если запретить слишком много, можно случайно закрыть важные страницы с параметрами, которые реально нужны пользователю или аналитике.
4. Уберите лишние параметры из внутренних ссылок
Очень часто дубли создают сами шаблоны и плагины: кнопки шаринга, хлебные крошки, блоки похожих записей, ссылки из меню. Если внутренняя ссылка ведет на URL с UTM или служебным параметром, поисковик будет регулярно находить мусорную версию.
Проверьте:
- нет ли в меню и виджетах ссылок с
?utm_; - не добавляет ли плагин кнопок шаринга параметр
replytocom; - не генерирует ли тема ссылки на поиск или фильтры с лишними query string;
- не подставляет ли кастомный код текущий URL вместо канонического.
Когда лучше использовать код, а когда плагин
Если проблема точечная и понятная, код обычно надежнее: он делает ровно то, что нужно, без лишней логики. Если на сайте много типов дублей, а команда не хочет поддерживать свой код, проще взять SEO-плагин и настроить правила в интерфейсе. Но важно понимать компромисс.
| Подход | Плюсы | Минусы |
|---|---|---|
| Код в теме или mu-plugin | точный контроль, минимум зависимостей | нужно сопровождение разработчиком |
| SEO-плагин | быстрее внедрить, меньше ручной работы | может конфликтовать с темой и другими плагинами |
| robots.txt без доп. настроек | просто и быстро | не решает проблему индексации полностью |
Если на сайте уже используется комплексная чистка дублей и служебных страниц, можно посмотреть в сторону Clearfy Pro. Но даже в этом случае полезно понимать, какие правила реально применяются, а какие только скрывают симптом.
Проверка результата после внедрения
После изменений не ограничивайтесь визуальной проверкой страницы. Нужно убедиться, что поисковик получает правильные сигналы.
- Откройте страницу с параметром и без параметра.
- Проверьте исходный код: canonical должен вести на чистый URL.
- Посмотрите meta robots: для мусорных параметров должен быть
noindex, если вы его добавляли. - Прогоните URL через проверку в Google Search Console.
- Сравните, не исчезли ли важные страницы из индекса случайно.
Для быстрой локальной проверки удобно использовать curl:
curl -I https://example.com/page/?utm_source=testВ ответе вы не увидите canonical, потому что он находится в HTML, но сможете проверить код ответа и убедиться, что страница не редиректит неожиданно. Затем откройте HTML и найдите canonical и robots.
Частые ошибки и как их исправить
Закрывают все параметры подряд
Это самая частая ошибка. Не каждый query string — мусор. Если параметр меняет сортировку, фильтр или состояние страницы, его нужно оценивать отдельно. Иначе можно убить полезные посадочные страницы и сломать внутреннюю навигацию.
Путают noindex и Disallow
Disallow в robots.txt не гарантирует удаление URL из индекса. Если страница уже известна поисковику, он может продолжать хранить ее в базе без контента. Для удаления из индекса нужен либо доступ к странице с noindex, либо корректный canonical, либо и то и другое.
Canonical указывает на URL с параметром
Такое часто случается после ручной правки шаблона или при конфликте плагинов. Проверьте, не подменяет ли canonical SEO-плагин, и не выводит ли тема второй тег canonical. На странице должен быть один основной canonical.
Закрывают пагинацию без проверки
Если закрыть страницы 2, 3, 4 без понимания структуры сайта, можно ухудшить обход контента. Пагинация — не всегда дубль. Иногда это нормальный способ добраться до старых записей или товаров.
Практические советы по безопасности и производительности
Не храните правила борьбы с дублями в случайном сниппете из админки, если он не версионируется. Лучше вынести код в mu-plugin или в отдельный мини-плагин, чтобы он не потерялся при смене темы.
Если сайт большой, не пытайтесь ловить все параметры через тяжелую логику на каждом запросе. Достаточно проверить несколько известных служебных параметров и не перегружать фронтенд лишними условиями. Для сложных сайтов полезно вести список параметров, которые реально встречаются в логах и Search Console, а не закрывать все подряд.
И еще один момент: если вы используете несколько SEO-инструментов одновременно, убедитесь, что они не спорят между собой. Два плагина, которые одновременно правят canonical и robots, часто создают больше проблем, чем решают.
Если нужна более системная чистка дублей, служебных страниц и лишних SEO-элементов, имеет смысл смотреть не только на отдельные правки, но и на общую конфигурацию темы, плагинов и шаблонов. В WordPress это обычно дает лучший результат, чем точечная “магия” в одном месте.