Страницы с параметрами в WordPress обычно появляются незаметно: к обычному URL добавляются ?utm_source=, ?replytocom=, ?sort=, ?filter= и другие хвосты. Для пользователя это один и тот же контент, а для поисковика — уже отдельные адреса. В итоге в индексе копятся дубли, распыляется вес и усложняется обход сайта.
Если у вас уже настроены канонические URL, это не всегда решает проблему полностью. Поисковик может всё равно обходить параметрические страницы, а в отчётах появятся лишние URL. Ниже — рабочая схема, как закрывать такие страницы точечно, не ломая аналитику, шаринг и полезные фильтры.
Когда это действительно проблема
Не каждый URL с параметром нужно закрывать. Сначала стоит понять, что именно генерирует дубли и как они попадают в поиск. На практике чаще всего мешают:
- UTM-метки в ссылках из рекламы и рассылок;
- параметры сортировки и фильтрации в архиве записей или на странице каталога;
?replytocom=в комментариях;- служебные параметры плагинов, которые создают отдельные адреса без уникального контента;
- страницы поиска по сайту с пустыми или повторяющимися запросами.
Как быстро диагностировать источник дублей
Откройте несколько URL с параметрами и проверьте три вещи: меняется ли контент, отличается ли title, и есть ли canonical на чистый адрес. Если контент одинаковый, а URL только меняется за счёт параметра, это кандидат на закрытие от индексации или на жёсткую нормализацию.
Полезно посмотреть и серверные логи, если есть доступ. Если бот регулярно ходит по параметрическим URL, значит, проблема не только в индексации, но и в обходе краулингового бюджета.
Что выбрать: noindex, canonical или запрет в robots.txt
У этих способов разная задача. Ошибка многих сайтов — закрыть всё подряд в robots.txt, а потом удивляться, что поисковик всё равно видит URL в выдаче без сниппета или не может корректно переобходить нужные страницы.
| Способ | Когда применять | Плюс | Минус |
|---|---|---|---|
noindex | Страница доступна, но не должна быть в индексе | Явный сигнал поисковику | Нужно, чтобы бот мог страницу обойти |
canonical | Есть дубли с параметрами, но нужен основной URL | Сохраняет обход и передачу сигналов | Не всегда достаточно для мусорных параметров |
robots.txt | Нужно сократить обход, а не только индекс | Экономит crawl budget | Не гарантирует удаление из индекса |
Для параметров обычно лучше сочетать canonical и noindex там, где страница не несёт отдельной ценности. А вот для совсем мусорных параметров можно дополнительно ограничить обход через robots, но только после проверки, что это не ломает нужные разделы.
Пошаговое решение для WordPress
1. Сначала уберите генерацию лишних параметров там, где это возможно
Если параметр создаёт ваш шаблон, плагин или форма, лучше не закрывать последствия, а убрать причину. Например, для комментариев можно отключить replytocom, если он вам не нужен. Для сортировок и фильтров — убедиться, что они не создают отдельные индексируемые страницы без необходимости.
Если у вас есть доступ к коду темы, можно принудительно отдавать canonical на базовый URL для страниц, где параметры не должны влиять на контент:
add_filter('get_canonical_url', function ($canonical, $post) {
if (is_admin() || ! is_singular() || ! $post) {
return $canonical;
}
$params_to_ignore = array('utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'replytocom');
foreach ($params_to_ignore as $param) {
if (isset($_GET[$param])) {
return get_permalink($post);
}
}
return $canonical;
}, 10, 2);Этот вариант не закрывает страницу от индексации сам по себе, но помогает поисковику понять, какая версия основная. Используйте его только если параметр не меняет смысл страницы.
2. Добавьте noindex для служебных параметров
Если параметр не нужен в поиске, но страница должна открываться пользователю, ставьте noindex,follow. В WordPress это можно сделать через wp_robots:
add_filter('wp_robots', function ($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;
});Это рабочий подход для UTM и похожих меток. Но не применяйте его к параметрам, которые формируют отдельный полезный контент, например к фильтрам товарных подборок или страницам поиска по каталогу, если они реально нужны в SEO-структуре.
3. Закройте мусорные параметры в robots.txt только после проверки
Если бот активно тратит обход на бесполезные URL, можно ограничить их в robots.txt. Важно: не блокируйте всё подряд, особенно если параметр участвует в навигации или фильтрации важных страниц.
User-agent: *
Disallow: /*?replytocom=
Disallow: /*?utm_
Disallow: /*&utm_
Такой вариант помогает сократить обход, но не заменяет noindex. Для Google это не способ гарантированно удалить URL из индекса, если он уже там есть. Поэтому сначала лучше поставить noindex, а robots использовать как дополнительный фильтр.
4. Если используете SEO-плагин, проверьте его настройки
Во многих случаях проще не писать код, а настроить уже установленный SEO-плагин. Например, в Clearfy Pro есть инструменты для чистки сайта и управления техническими дублями. Это полезно, когда нужно быстро убрать типовые служебные URL без правки темы.
Но даже с плагином стоит проверить, что он не закрывает лишнее. Автоматические правила иногда задевают страницы фильтров, пагинации или поиска, которые вам нужны для индексации.
Проверка результата после внедрения
После изменений не ограничивайтесь просмотром исходного кода. Проверьте поведение URL в браузере и в инструментах для вебмастеров.
- Откройте URL с параметром и убедитесь, что в
<head>появилсяnoindex, если он нужен. - Проверьте canonical: он должен вести на чистый адрес, если параметр не меняет контент.
- Сравните ответ сервера для URL с параметром и без него.
- Посмотрите отчёты обхода и индексирования в панели вебмастера.
- Проверьте, не исчезли ли из индекса нужные страницы фильтров или поиска.
Для быстрой проверки удобно использовать curl:
curl -I "https://example.com/post/?utm_source=test"
Если вы добавляли noindex через wp_robots, одного заголовка может быть недостаточно для полной уверенности. Откройте HTML страницы и найдите мета-роботы в исходнике. Если canonical меняется динамически, проверьте именно тот URL, который создаёт дубль.
Частые ошибки и как их исправить
Закрывают в robots.txt, но не ставят noindex
Это самая частая ошибка. Страница перестаёт обходиться, но уже попавший в индекс URL может остаться там надолго. Если цель — убрать дубль из поиска, нужен именно noindex или корректный canonical, а не только запрет обхода.
Ставят noindex на все параметры без разбора
Так можно случайно выкинуть из индекса полезные страницы фильтрации, сортировки или поиска. Сначала составьте список параметров: какие служебные, какие маркетинговые, какие влияют на контент. Закрывайте только то, что не несёт самостоятельной ценности.
Ломают каноникал на страницах пагинации
Если в шаблоне canonical всегда указывает на первую страницу, поисковик может хуже понимать структуру архива. Для пагинации и архивов лучше не подменять canonical без необходимости. Иначе вместо решения дублей получите проблемы с обходом страниц 2, 3, 4 и дальше.
Не проверяют конфликт с кэшем
После правок кэш может отдавать старый <head> с прежним canonical или без noindex. Очистите серверный кэш, кэш плагина и CDN, если он есть. Иначе вы будете проверять уже не тот HTML, который видит бот.
Что делать, если параметры нужны для аналитики
UTM-метки часто нужны маркетингу, но не нужны поиску. Это нормальный сценарий: ссылка с UTM должна работать для аналитики, но не создавать отдельную индексируемую страницу. В таком случае не убирайте параметры на уровне входа, а просто отдавайте канонический URL и noindex для страниц с UTM.
Если у вас есть собственная логика редиректов, не делайте 301 со всех UTM на чистый URL без проверки аналитики. Иногда это ломает атрибуцию кампаний. Лучше оставить параметр в адресе для пользователя и трекинга, но исключить его из индексации.
Мини-чек-лист перед публикацией правок
- Составлен список параметров, которые реально создают дубли.
- Для служебных параметров добавлен
noindex,follow. - Для дублей указан корректный canonical на чистый URL.
- Не закрыты страницы, которые должны индексироваться.
- Сброшен кэш сайта, плагина и CDN.
- Проверен исходный HTML и ответ сервера.
- В панели вебмастера нет массового роста мусорных URL.
Если задача сводится к типовым дублям, чистке служебных URL и управлению технической индексацией, часть работы можно закрыть настройками, а не правкой темы. Но логика всё равно должна быть точечной: один параметр — одно решение, а не универсальный запрет на весь сайт.