Служебные URL с параметрами вроде ?sort=price, ?filter=red, ?replytocom=1 и UTM-меток часто создают лишние страницы в индексе. В результате поисковик видит дубли, а в отчётах по сканированию растёт мусор. На обычном сайте это проявляется не сразу: трафик проседает постепенно, а в Search Console появляются URL, которые вы вообще не считали отдельными страницами.
Ниже разберём, как понять источник проблемы, какие URL закрывать от индексации, а какие лучше не трогать, и как проверить, что поисковый робот действительно перестал считать такие страницы самостоятельными.
Когда проблема уже есть и как её распознать
Первый сигнал — в индексе появляются адреса с параметрами, которые не несут уникального контента. Это могут быть:
- страницы сортировки и фильтрации;
- URL с UTM-метками из рекламных кампаний;
?replytocom=1у комментариев;- служебные параметры плагинов;
- дубли пагинации и поиска по сайту.
Проверять нужно не только индекс, но и логику генерации. Если параметр меняет только вид выдачи, а не смысл страницы, это почти всегда кандидат на закрытие от индексации или на каноникал к чистому URL.
Что смотреть в первую очередь
- Отчёт «Страницы» в Google Search Console.
- Поиск по сайту через
site:example.com inurl:?. - Исходный код страницы: есть ли
rel="canonical". - Ответ сервера: не отдаёт ли страница 200 OK там, где должен быть один канонический адрес.
Если параметр создаёт отдельную полезную страницу, например фильтр каталога с уникальным текстом и посадочной логикой, решение уже сложнее. Но для обычных технических параметров задача простая: убрать их из индекса и не плодить дубли.
Какие подходы работают на практике
Есть три рабочих варианта, и выбор зависит от того, что именно делает параметр.
| Подход | Когда использовать | Минус |
|---|---|---|
| noindex, follow | Для служебных страниц, которые должны открываться пользователю, но не нужны в поиске | Робот всё равно может заходить на URL, если он активно связан внутренними ссылками |
| canonical на чистый URL | Если параметр не меняет смысл страницы и есть основной адрес без параметра | Нужно следить, чтобы canonical был стабильным и не конфликтовал с пагинацией |
| Удаление генерации параметра | Если параметр вообще не нужен на сайте | Требует правки темы, плагина или логики ссылок |
На практике часто комбинируют первый и третий варианты: лишний параметр перестают генерировать, а уже существующие URL закрывают от индексации и ставят canonical.
Пошаговое решение через код
Если параметр известен заранее, проще всего отдать для таких страниц мета-тег noindex, follow. Это не ломает доступ пользователю, но даёт поисковику понятный сигнал.
<?php
add_action( 'wp_head', function () {
$blocked_params = array( 'sort', 'filter', 'replytocom', 'utm_source', 'utm_medium', 'utm_campaign' );
foreach ( $blocked_params as $param ) {
if ( isset( $_GET[ $param ] ) ) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
break;
}
}
}, 1 );Этот вариант подходит, если вы не хотите вмешиваться в шаблоны плагинов и вам достаточно закрыть URL на уровне HTML. Но одного noindex иногда мало: если параметр создаёт дубли, лучше ещё указать канонический адрес.
<?php
add_filter( 'wpseo_canonical', function ( $canonical ) {
if ( empty( $_GET ) ) {
return $canonical;
}
$remove = array( 'sort', 'filter', 'replytocom', 'utm_source', 'utm_medium', 'utm_campaign' );
$clean = remove_query_arg( $remove );
return $clean ? $clean : $canonical;
} );Если у вас не Yoast SEO, а другой SEO-плагин, логика та же: нужно вернуть канонический URL без служебных параметров. Важно не подменять canonical на странице поиска, пагинации или фильтра, если там уже есть своя логика.
Когда лучше убрать параметр совсем
Если параметр добавляет тема или плагин без необходимости, правильнее убрать его источник. Например, replytocom часто появляется из-за ссылок на комментарии. Если они вам не нужны, можно отключить их генерацию или заменить поведение темы.
Для UTM-меток обычно ничего удалять не надо: они нужны для аналитики, но не должны индексироваться. Для них достаточно canonical на чистую страницу и, при необходимости, noindex на URL с параметрами.
Диагностика: как понять, что решение сработает до переобхода
После внедрения не стоит ждать, пока поисковик сам всё переосмыслит. Проверка делается сразу на уровне HTML и ответа сервера.
- Откройте страницу с параметром, например
/article/?utm_source=test. - Посмотрите исходный код и убедитесь, что есть
<meta name="robots" content="noindex,follow" />. - Проверьте canonical: он должен указывать на чистый URL без параметров.
- Убедитесь, что страница отдаёт
200 OK, а не редиректит на случайный адрес. - В Search Console отправьте проверку URL через инструмент проверки страницы.
Если вы закрываете только UTM, не ждите мгновенного исчезновения URL из индекса. Сначала поисковик должен переобойти страницу и увидеть новый сигнал. Это нормальный процесс.
Частые ошибки и как их исправить
Ставят noindex на все страницы подряд
Такое часто случается, когда условие написано слишком широко. Например, проверяют только наличие $_GET, не ограничивая список параметров. В итоге под noindex попадают страницы поиска, фильтры, пагинация и даже полезные посадочные URL.
Исправление простое: проверяйте только конкретные параметры, которые действительно создают дубли.
Canonical указывает на URL с параметром
Это ломает смысл всей настройки. Если canonical повторяет служебный адрес, поисковик продолжит считать его отдельной страницей. Причина обычно в том, что фильтр возвращает исходный URL из плагина, а не очищенный адрес.
Проверьте, что в canonical нет ? и служебных параметров, если они не нужны для индексации.
Закрывают URL в robots.txt вместо noindex
Для уже найденных страниц это слабое решение. Если робот не может зайти на страницу, он не увидит мета-тег noindex и может дольше держать URL в индексе. Robots.txt полезен для ограничения сканирования, но не заменяет корректную индексацию.
Удаляют параметры, не проверив аналитику
Если параметр нужен для рекламных меток или внутреннего трекинга, его нельзя просто вырезать из всех ссылок без последствий. Сначала определите, кто его использует: маркетинг, фильтр, плагин комментариев или сторонний сервис.
Чек-лист перед публикацией правок
- Список параметров составлен и не включает полезные URL.
- Для служебных страниц добавлен
noindex,follow. - Canonical очищен от параметров там, где это уместно.
- Ссылки внутри сайта не генерируют лишние query string без необходимости.
- Проверка URL в Search Console показывает нужный robots-сигнал.
- Страницы с параметрами не попадают в sitemap.xml.
Практические советы по безопасности и производительности
Если на сайте много параметров, не пытайтесь решать всё регулярками в каждом шаблоне. Лучше собрать логику в одном месте: в дочерней теме, небольшом MU-плагине или в собственном мини-плагине. Так проще сопровождать код и не потерять его при обновлении темы.
Ещё один полезный момент — не плодить бесконечные комбинации фильтров. Чем больше параметров в URL, тем выше шанс получить тысячи почти одинаковых страниц. Если фильтрация нужна пользователю, подумайте о предсказуемых посадочных страницах вместо бесконечного набора query string.
Если задача шире и нужно не только закрыть дубли, но и почистить сайт от лишних SEO-артефактов, иногда удобнее использовать специализированные инструменты вроде Clearfy Pro: он помогает управлять дублями, служебными метками и частью технической чистки без ручного разбора каждого шаблона. Но даже в этом случае полезно понимать, какой именно URL вы закрываете и почему.
Как проверить результат после внедрения
Через несколько дней после правки снова откройте проблемные URL и проверьте:
- есть ли
noindex,followв исходном коде; - не изменился ли canonical после обновления темы или плагина;
- не появились ли новые параметры с тем же эффектом;
- не растёт ли число таких URL в отчётах Search Console.
Если всё сделано правильно, новые служебные страницы перестанут накапливаться в индексе, а старые начнут выпадать после переобхода. Это не мгновенная операция, но она хорошо контролируется по исходному коду и отчётам поисковика.