Страницы с параметрами в URL — типичная причина мусорной индексации: ?sort=, ?filter=, ?utm_, ?replytocom=, внутренний поиск, пагинация с лишними параметрами. Проблема не в самих параметрах, а в том, что поисковик начинает воспринимать такие URL как отдельные страницы. В итоге в индексе появляются дубли, а краулинговый бюджет уходит на бесполезные адреса.
Ниже — рабочий сценарий: как диагностировать проблему, какие URL действительно стоит закрывать, и как сделать это через код или SEO-плагин без риска случайно выкинуть из индекса нужные страницы.
Когда параметры в URL становятся проблемой
Не каждый URL с параметром нужно закрывать. Например, ?replytocom= почти всегда создаёт дубли, а ?utm_source= обычно нужен только для аналитики и не должен индексироваться. А вот страницы фильтров в каталоге, сортировки, внутреннего поиска и технических параметров часто плодят десятки почти одинаковых URL.
Типичные сценарии
- страницы сортировки:
?sort=price_asc; - фильтры по атрибутам:
?color=black&size=m; - пагинация с параметрами:
?page=2или комбинации с фильтрами; - служебные параметры:
?replytocom=123,?amp,?fbclid; - внутренний поиск:
?s=ключевое+слово.
Если такие страницы уже попали в индекс, одного noindex мало: нужно ещё убрать причину появления дублей и проверить, что канонический URL указывает на основную страницу.
Диагностика: какие параметры уже индексируются
Сначала не меняйте настройки вслепую. Посмотрите, какие URL реально попали в поиск и как они выглядят в логике сайта.
- В Google Search Console откройте отчёт по страницам и найдите URL с параметрами.
- Проверьте, есть ли у них канонический URL без параметров.
- Сравните содержимое страницы с параметрами и основной страницы: если текст и блоки одинаковые, это почти наверняка дубль.
- Посмотрите, не используются ли параметры для критичных сценариев: корзина, авторизация, фильтр в каталоге, который нужен пользователю.
Если у вас есть доступ к серверным логам, полезно посмотреть, как часто бот ходит по таким адресам. Это помогает понять, стоит ли закрывать только индексацию или ещё и ограничивать обход.
Что лучше: noindex, canonical или robots.txt
Для параметров часто путают три разных инструмента. Они решают разные задачи.
| Подход | Когда использовать | Минус |
|---|---|---|
noindex | страница доступна, но не должна попадать в индекс | боту всё равно нужно зайти на страницу, чтобы увидеть мета-тег |
rel=canonical | есть дубль, который должен указывать на основную страницу | не всегда срабатывает, если страницы сильно отличаются |
robots.txt | нужно ограничить обход технических URL | если закрыть слишком рано, поисковик не увидит noindex и canonical |
На практике для параметров чаще всего используют связку: noindex,follow на самих страницах + canonical на основную версию + при необходимости правила в robots.txt для совсем технических адресов.
Решение через код: ставим noindex для URL с параметрами
Если у вас кастомная тема или вы не хотите зависеть от настроек SEO-плагина, можно добавить условный noindex в <head>. Ниже пример для дочерней темы или небольшого mu-plugin.
<?php
add_action('wp_head', function () {
if (is_admin() || is_feed()) {
return;
}
$params = array_keys($_GET);
if (empty($params)) {
return;
}
$blocked_params = array('sort', 'filter', 'color', 'size', 'replytocom', 's');
$matched = array_intersect($params, $blocked_params);
if (!empty($matched)) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
}, 1);Этот вариант простой, но его нельзя применять бездумно. Например, параметр s отвечает за поиск, а поисковые страницы часто нужно закрывать отдельно, а не вместе с фильтрами. Поэтому список параметров лучше адаптировать под ваш сайт.
Если нужно закрывать только конкретные шаблоны
Иногда безопаснее ориентироваться не на имя параметра, а на тип страницы. Например, закрывать только внутренний поиск и страницы фильтров в определённой таксономии.
<?php
add_action('wp_head', function () {
if (is_admin() || is_feed()) {
return;
}
if (is_search()) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
return;
}
if (is_tax('product_cat') && !empty($_GET['filter'])) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
}, 1);Такой подход лучше, если параметры используются по-разному на разных разделах сайта. Он снижает риск случайно закрыть полезные страницы.
Как сделать canonical для страниц с параметрами
Если параметр не меняет смысл страницы, canonical должен указывать на чистый URL без параметров. Это особенно важно для UTM-меток, сортировок и некоторых фильтров, которые не должны создавать отдельный документ.
<?php
add_filter('get_canonical_url', function ($canonical, $post) {
if (is_admin() || empty($_GET)) {
return $canonical;
}
$remove = array('utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid');
$current = home_url(add_query_arg(array_diff_key($_GET, array_flip($remove)), ''));
if (!empty($current)) {
return remove_query_arg(array_keys($_GET), $canonical);
}
return $canonical;
}, 10, 2);На практике canonical лучше не усложнять. Если у вас уже есть SEO-плагин, проверьте, умеет ли он сам формировать канонический URL для страниц с параметрами. Вручную имеет смысл вмешиваться только там, где стандартное поведение плагина не подходит.
Пошаговая настройка без поломки индексации
- Составьте список параметров, которые создают дубли.
- Проверьте, не используются ли они в критичных сценариях сайта.
- Добавьте
noindex,followтолько для нужных шаблонов или параметров. - Убедитесь, что canonical указывает на основную страницу без параметров.
- Если есть технические URL, добавьте их в
robots.txtтолько после проверки, что поисковик уже видит нужные мета-теги. - Отправьте на переобход основные страницы и дождитесь обновления в Search Console.
Чек-лист перед публикацией изменений
- На страницах с параметрами появился
<meta name="robots" content="noindex,follow" />. - Основные страницы без параметров остались индексируемыми.
- Canonical ведёт на чистый URL.
- Внутренний поиск не закрыт случайно, если он нужен для навигации.
- Фильтры каталога не ломают пользовательский сценарий.
- В sitemap не попали технические URL с параметрами.
Как проверить, что решение сработало
Проверка должна быть не только визуальной. Откройте несколько URL с параметрами и посмотрите исходный код страницы: в <head> должен быть нужный robots-мета-тег. Затем проверьте canonical и сравните его с чистым URL.
Дальше используйте Search Console:
- отправьте страницу на проверку URL;
- посмотрите, как Google видит страницу сейчас;
- убедитесь, что статус индексации меняется на исключённую или неиндексируемую страницу;
- через некоторое время проверьте, исчезают ли дубли из отчётов.
Если страница всё ещё индексируется, обычно причина одна из трёх: тег не выводится на нужном шаблоне, canonical конфликтует с другим плагином, либо URL уже давно в индексе и поисковику нужно время на переобход.
Частые ошибки и как их исправить
Закрыли параметр в robots.txt раньше времени
Если запретить обход через robots.txt, поисковик может не увидеть noindex и canonical. Для дублей это часто хуже, чем просто оставить страницу доступной для обхода. Сначала дайте роботу увидеть мета-тег, потом при необходимости ограничивайте обход.
Случайно закрыли полезные страницы
Это происходит, когда правило завязано только на наличие любого параметра в URL. Например, UTM-метки есть почти у всех рекламных переходов, но закрывать по ним весь URL не всегда нужно. Лучше исключать только те параметры, которые реально создают дубли.
Конфликт с SEO-плагином
Если у вас уже стоит Yoast SEO, Rank Math или другой SEO-плагин, он может переопределять canonical и robots-мета-теги. В таком случае не добавляйте второй независимый механизм без проверки. Сначала найдите, кто именно выводит тег в <head>.
Параметры остались в sitemap
Если URL с параметрами попали в карту сайта, поисковик будет продолжать их активно обходить. Проверьте генерацию sitemap и исключите технические адреса на уровне плагина или шаблона.
Безопасность и производительность
Чем больше мусорных URL, тем больше лишней работы у бота и у сервера. На нагруженных сайтах это заметно по логам и по количеству однотипных запросов. Но не стоит пытаться решить всё через жёсткий запрет доступа. Для SEO обычно важнее корректная индексация, а не блокировка на уровне сервера.
Если параметры используются для фильтрации каталога или поиска, проверьте ещё два момента: не создают ли они бесконечные комбинации URL, и не открывают ли они путь к тяжёлым запросам к базе. Иногда полезно ограничить допустимые значения параметров на уровне кода, а не только скрывать их от индексации.
Если нужен готовый набор инструментов для чистки дублей и технической оптимизации, можно посмотреть Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже с плагином полезно понимать, какие именно URL вы закрываете и почему.
В итоге рабочая схема всегда одна: сначала находите источник дублей, потом выбираете точечное правило для конкретных параметров или шаблонов, и только после этого проверяете результат в поисковой консоли и исходном коде страницы.