На WordPress-сайтах URL с параметрами появляются постоянно: сортировка каталога, фильтры, поиск по сайту, UTM-метки, технические параметры пагинации и трекинга. Проблема в том, что поисковик может воспринимать такие адреса как отдельные страницы и начать индексировать их пачками. В итоге в индексе оказываются дубли, а не основной канонический URL.
Если задача именно в том, чтобы не пускать страницы с GET-параметрами в индекс, сначала нужно понять, какие из них реально создают отдельный контент, а какие просто меняют способ отображения той же страницы. От этого зависит способ решения: где-то достаточно закрыть шаблонные параметры через robots.txt, а где-то нужен noindex на уровне HTML-страницы или заголовка.
Какие параметры обычно нужно закрывать
GET-параметры — это часть URL после знака ?. Например, /shop/?sort=price или /search/?s=книга. Для поисковика это уже не просто исходная страница, а новый адрес. Если таких комбинаций много, индекс быстро разрастается мусорными URL.
Чаще всего закрывают от индексации:
- сортировку:
?sort=,?orderby=; - фильтры:
?color=,?size=,?brand=и похожие; - внутренний поиск:
?s=; - трекинговые метки:
?utm_source=,?utm_medium=,?gclid=,?fbclid=; - технические параметры, которые не должны жить в поиске.
Но не все параметры одинаковы. Если параметр меняет только отображение списка товаров, его обычно имеет смысл закрывать. Если же параметр формирует полноценную посадочную страницу с уникальным содержимым и спросом, закрывать его бездумно не стоит.
Что выбрать: robots.txt, noindex или canonical
Для страниц с параметрами в WordPress обычно используют три подхода, и они решают разные задачи.
| Способ | Когда подходит | Что важно знать |
|---|---|---|
robots.txt | Для массовых шаблонных параметров, которые не должны обходиться роботом | Запрещает обход, но не гарантирует удаление уже известного URL из индекса |
noindex | Когда страницу можно открыть пользователю, но не нужно показывать в поиске | Надёжнее для исключения из индекса, но страница должна быть доступна роботу для чтения мета-тега или заголовка |
canonical | Когда параметрическая версия должна указывать на основную страницу | Это подсказка, а не жёсткий запрет; полезно как дополнение, но не как единственная мера |
На практике для параметров часто используют комбинацию: noindex для страниц, которые открываются, и аккуратный robots.txt для явно мусорных шаблонов. Если закрыть всё только через robots.txt, поисковик может продолжать держать URL в индексе по старым сигналам, даже не заходя на страницу.
Как закрыть параметры через robots.txt
Если у вас есть типовые URL с одинаковым шаблоном параметра, их можно запретить в robots.txt. Это удобно для массовых фильтров, сортировок и внутренних поисковых URL.
Пример для стандартных параметров поиска и UTM-меток:
User-agent: *
Disallow: /*?s=
Disallow: /*?sort=
Disallow: /*?orderby=
Disallow: /*?utm_
Disallow: /*?gclid=
Disallow: /*?fbclid=Такой вариант работает не на всех хостингах одинаково предсказуемо, потому что поддержка шаблонов в robots.txt зависит от того, как именно поисковик интерпретирует правила. Для Google и Яндекса подобные директивы обычно применяются, но это не заменяет проверку в панели вебмастера.
Есть важный нюанс: если вы закрываете страницу в robots.txt, поисковик может не увидеть на ней мета-тег noindex. Поэтому для страниц, которые уже попали в индекс, одного запрета обхода часто недостаточно.
Когда нужен noindex и как его поставить в WordPress
Если параметрическая страница должна открываться пользователю, но не должна попадать в поиск, надёжнее использовать noindex. В WordPress это можно сделать несколькими способами: через SEO-плагин, через настройки темы или программно. Для большинства сайтов самый практичный путь — SEO-плагин, если он умеет задавать правила для архивов, поиска и отдельных шаблонов.
Если плагин позволяет закрыть от индексации конкретные типы страниц, проверьте в первую очередь:
- страницы внутреннего поиска;
- архивы с параметрами сортировки и фильтрации;
- служебные страницы, которые не несут самостоятельной ценности в поиске.
Если нужно закрывать именно страницы с определёнными параметрами, а плагин этого не умеет, остаётся программный вариант. Для WordPress это обычно делают через фильтр wp_robots, который позволяет добавить директиву noindex на нужных URL.
Ниже пример, который ставит noindex, follow на URL с параметрами sort, orderby и s. Код лучше добавлять в дочернюю тему или в небольшой mu-plugin, а не в основной файл темы, чтобы не потерять изменения после обновления.
add_filter('wp_robots', function ($robots) {
if (is_admin()) {
return $robots;
}
$keys = ['sort', 'orderby', 's'];
foreach ($keys as $key) {
if (isset($_GET[$key]) && $_GET[$key] !== '') {
$robots['noindex'] = true;
$robots['follow'] = true;
break;
}
}
return $robots;
});Этот код не запрещает обход страницы, а только просит поисковик не включать её в индекс. Для поисковых систем это обычно более правильный сигнал, чем попытка спрятать URL только через robots.txt.
Если у вас есть отдельные шаблоны для фильтров или поиска, можно делать правило точнее: проверять не только наличие параметра, но и конкретный тип страницы. Это снижает риск случайно закрыть полезные URL.
Что делать с уже проиндексированными URL
Если страницы с параметрами уже попали в индекс, одного изменения настроек мало. Нужно дать поисковику понятный сигнал, что эти адреса больше не должны участвовать в выдаче.
Рабочая последовательность обычно такая:
- На параметрических страницах поставить
noindex. - Если URL не нужен вообще, настроить редирект или убрать генерацию ссылки на него.
- Добавить или оставить
canonicalна основную версию страницы, если это уместно. - Проверить, не блокирует ли
robots.txtобход страницы раньше, чем поисковик увидитnoindex.
Если URL уже висит в индексе, а вы одновременно запретили его в robots.txt, поисковику может понадобиться больше времени, чтобы убрать его из выдачи. В таких случаях лучше сначала дать возможность увидеть noindex, а уже потом при необходимости ужесточать правила обхода.
Как проверить, что закрытие работает
После настройки не стоит полагаться только на предположение, что всё сработало. Проверка занимает немного времени и сразу показывает, где ошибка: в шаблоне, в robots.txt или в логике параметров.
Проверьте три вещи:
- открывается ли URL с параметром в браузере;
- есть ли на странице мета-тег
noindexили заголовокX-Robots-Tag, если вы использовали этот способ; - не закрыт ли URL в
robots.txtраньше, чем поисковик сможет увидеть директивуnoindex.
Если используете Google Search Console или Яндекс Вебмастер, отправьте тестовый URL на проверку. Важно смотреть именно на параметрическую версию адреса, а не на основную страницу без параметров. Частая ошибка — проверять только канонический URL и делать вывод, что всё настроено правильно.
Типичные ошибки, из-за которых страницы всё равно лезут в индекс
Самая частая ошибка — закрыть только часть параметров. Например, вы запретили ?sort=, но забыли про ?orderby= или ?filter_. В результате поисковик продолжает находить новые комбинации URL.
Ещё одна проблема — ставить Disallow в robots.txt и ждать, что этого достаточно для удаления уже известных страниц. Это не всегда так. Для исключения из индекса нужен именно сигнал noindex или удаление страницы из доступного обхода и выдачи через корректную комбинацию настроек.
Третья ошибка — закрывать параметры, которые на самом деле полезны для SEO. Если фильтр или сортировка создаёт посадочную страницу с реальным спросом и уникальным содержанием, её лучше оценивать отдельно, а не автоматически прятать от индекса.
Если у вас много дублей, сначала разберите, какие параметры действительно мусорные, а какие просто технически неудобные. Это экономит время и не ломает нормальную структуру сайта. Для WordPress это особенно важно: система легко генерирует десятки вариантов одного и того же контента, и без явной политики по параметрам индексация быстро становится хаотичной.
Практически для большинства сайтов рабочая схема выглядит так: мусорные параметры закрываются через robots.txt, страницы, которые должны открываться, но не индексироваться, получают noindex, а для основных URL дополнительно проверяется canonical. Если сделать только один из этих шагов, результат часто оказывается неполным.