Если в индексе начали появляться адреса вида ?utm_source=, ?replytocom=, ?sort= или внутренние параметры фильтров, проблема обычно не в одном теге noindex. Чаще всего WordPress уже отдает несколько вариантов одной и той же страницы, а поисковик сам выбирает, что считать каноническим. В итоге в отчётах растут дубли, а нужные страницы теряют сигнал.
Ниже — рабочая схема, которая помогает разделить параметры на три группы: те, что надо игнорировать поиску, те, что должны оставаться доступными, и те, что лучше вообще не пускать в индекс. Подход рассчитан на обычный WordPress-сайт: блог, корпоративный проект, медиа, каталог без сложной e-commerce-логики.
Когда проблема действительно в параметрах URL
Сначала стоит убедиться, что вы боретесь именно с параметрами, а не с другой причиной дублей. Типичный симптом — в поиске и в панели вебмастеров появляются адреса одной и той же страницы с разными хвостами. Например, /article/?utm_source=telegram, /article/?replytocom=12, /category/news/?sort=popular. При этом контент на странице не меняется или меняется незначительно.
Что проверить в первую очередь
- Откройте проблемный URL с параметром и без него: контент, title и canonical должны совпадать там, где параметр не влияет на страницу.
- Посмотрите исходный код страницы: есть ли корректный
rel="canonical". - Проверьте, не создаёт ли параметр отдельную страницу в sitemap, если у вас есть кастомная генерация карты сайта.
- Сравните ответы сервера для URL с параметром и без: иногда редирект уже решает проблему без дополнительных правок.
Если параметр нужен только для аналитики, а не для контента, его почти всегда можно убрать из индексации. Если параметр меняет выдачу внутри сайта, например сортировку или фильтр, решение зависит от того, должен ли этот вариант ранжироваться отдельно.
Какой подход выбрать: canonical, noindex или редирект
Здесь важна не «магическая» настройка, а логика страницы. Один и тот же параметр может требовать разного поведения в разных проектах. Для ориентира удобнее смотреть на задачу, а не на инструмент.
| Сценарий | Что делать | Компромисс |
|---|---|---|
| UTM-метки, кликовые метки, параметры аналитики | Оставить страницу доступной, указать canonical на чистый URL | Параметр не должен менять контент |
| replytocom, служебные параметры комментариев | Ставить canonical на основную страницу и при необходимости закрывать от индексации | Нужно проверить темы и плагины комментариев |
| Сортировка и фильтры, которые не должны индексироваться | noindex, follow или canonical на основную категорию | Поисковик может дольше переобходить старые URL |
| Служебные параметры, которые не нужны пользователю | 301-редирект на чистый URL, если это безопасно | Можно потерять часть аналитических разметок в URL |
Если параметр не влияет на содержимое, редирект часто лучше, чем попытка «лечить» его только метатегами. Но редирект нельзя ставить вслепую: если по параметру реально строится полезная страница, вы сломаете навигацию и внутренние ссылки.
Пошаговое решение для WordPress
1. Сначала уберите мусорные параметры на уровне ссылок
Если параметры появляются из-за шаблона, кнопок шаринга или UTM в меню, лучше не плодить их внутри сайта. Для внутренних ссылок используйте чистые адреса, а метки оставляйте только для внешних кампаний. Это банально, но часто именно здесь начинается лавина дублей.
2. Добавьте canonical для страниц с параметрами
Если у вас уже есть страницы с параметрами, canonical должен указывать на чистую версию URL. В WordPress это можно сделать через wp_head, если вам нужен точечный контроль для конкретных параметров.
<?php
add_action( 'wp_head', function () {
if ( empty( $_GET ) ) {
return;
}
$allowed = array( 'utm_source', 'utm_medium', 'utm_campaign' );
$keys = array_keys( $_GET );
$diff = array_diff( $keys, $allowed );
if ( empty( $diff ) ) {
return;
}
$url = home_url( add_query_arg( array(), $GLOBALS['wp']->request ) );
echo '<link rel="canonical" href="' . esc_url( $url ) . '" />' . "
";
}, 20 );Этот пример намеренно простой: он не пытается «умно» собирать все варианты URL, а показывает идею. На практике лучше проверять конкретные параметры и не трогать те, которые нужны для функциональности сайта.
3. Закройте служебные параметры от индексации
Для параметров, которые не должны индексироваться, можно отдать noindex, follow на уровне заголовка или метатега. Если у вас уже есть SEO-плагин, проверьте, не делает ли он это сам. Дублировать логику в теме и в плагине — частая ошибка.
<?php
add_action( 'wp_head', function () {
if ( isset( $_GET['replytocom'] ) || isset( $_GET['sort'] ) ) {
echo '<meta name="robots" content="noindex,follow" />' . "
";
}
}, 1 );Такой вариант подходит только если вы точно понимаете, какие параметры хотите закрыть. Не используйте его для всех query string подряд: UTM-метки, например, обычно не требуют noindex, если canonical уже указывает на чистый URL.
4. При необходимости ставьте редирект на чистый адрес
Если параметр не нужен для работы сайта, безопаснее убрать его редиректом. Для этого лучше использовать template_redirect, а не пытаться переписывать URL на уровне шаблона.
<?php
add_action( 'template_redirect', function () {
if ( is_admin() ) {
return;
}
if ( isset( $_GET['replytocom'] ) ) {
wp_safe_redirect( remove_query_arg( 'replytocom' ), 301 );
exit;
}
} );Не делайте 301 для всех параметров без разбора. Например, если у вас фильтр каталога или сортировка в архиве, такой редирект сломает пользовательский сценарий.
Если нужен быстрый путь без кода
Когда сайт ведётся без разработчика, часть задач можно закрыть через SEO-плагин и настройки сервера. Это не отменяет проверки canonical и редиректов, но снижает риск ошибок в теме.
- Проверьте, умеет ли ваш SEO-плагин задавать robots-правила для архивов и параметров.
- Если параметры создаёт комментарийный функционал, отключите лишние ссылки на
replytocomв теме или плагине комментариев. - Для массовой чистки технических дублей полезно использовать инструменты, которые умеют убирать лишние элементы из head и настраивать canonical. Например, в Clearfy Pro есть набор функций для технической оптимизации и удаления дублей: https://wpshop.ru/plugins/clearfy.
Плагин не заменяет логику. Он помогает, если у вас типовой кейс и нужно быстро привести сайт в порядок без ручной доработки шаблона.
Как проверить, что решение сработало
После внедрения не ограничивайтесь визуальной проверкой в браузере. Нужны три уровня контроля: HTML, ответ сервера и данные в вебмастере.
- Откройте URL с параметром и проверьте исходный код: canonical должен вести на чистую страницу, а robots — соответствовать выбранной логике.
- Проверьте HTTP-ответ через DevTools или
curl -I: если вы ставили редирект, он должен быть 301 и вести на правильный адрес. - В панели вебмастера отправьте на переобход несколько проблемных URL и посмотрите, как они классифицируются через несколько обходов.
Для быстрой проверки на сервере можно использовать такую команду:
curl -I "https://example.com/article/?replytocom=12"Если вы выбрали canonical без редиректа, ответ должен оставаться 200, но canonical в HTML — указывать на чистый URL. Если выбрали 301, в ответе не должно быть цепочки редиректов.
Частые ошибки и как их исправить
Canonical указывает на себя вместе с параметром
Это происходит, когда шаблон строит canonical из текущего запроса, не очищая query string. В результате поисковик видит отдельный URL как самостоятельную страницу. Исправление простое: canonical должен формироваться из базового адреса без технических параметров.
Noindex ставят на все параметры подряд
Так делают, когда хотят быстро «почистить индекс», но потом теряют полезные страницы с фильтрами или сортировкой. Если параметр влияет на контент и нужен пользователю, сначала проверьте, не должен ли он оставаться индексируемым.
Редирект ломает аналитику и внутренние сценарии
Если вы перенаправляете все URL с query string на главную или на чистую страницу без разбора, можно сломать формы, поиск, сортировку и UTM-атрибуцию. Редирект должен быть точечным и только для тех параметров, которые действительно служебные.
Параметры закрыли в robots.txt, но дубли остались
Это ожидаемо: robots.txt не убирает уже известные поисковику URL из индекса сам по себе. Если страница уже попала в индекс, нужны canonical, noindex или редирект. Robots.txt здесь — вспомогательный инструмент, а не основное решение.
Практические советы по безопасности и производительности
Любая логика обработки параметров — это ещё и вопрос стабильности. Чем больше исключений вы добавляете в functions.php, тем выше шанс конфликта с темой или плагином. Лучше держать такие правки в дочерней теме или в небольшом mu-plugin, если проект поддерживается регулярно.
- Не используйте сырые значения из
$_GETбез проверки и экранирования. - Не строите canonical вручную через конкатенацию строк, если можно использовать функции WordPress для URL.
- Не закрывайте от индексации страницы, которые участвуют в навигации или фильтрации важного контента без теста на реальном трафике.
- Если параметров много, сначала составьте список и разделите их по назначению: аналитика, комментарии, сортировка, фильтры, служебные хвосты.
Когда задача выходит за рамки одной правки, удобно сначала навести порядок в технических дублях и служебных элементах сайта, а уже потом заниматься точечными правилами для параметров. Это снижает риск, что вы «почините» одно место и сломаете другое.
Если нужен более системный набор инструментов для технической чистки WordPress, посмотрите Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже с плагином проверка canonical, редиректов и ответов сервера остаётся обязательной.