На WordPress часто всплывает одна и та же проблема: сайт начинает плодить страницы с параметрами фильтра, сортировки, поиска или пагинации, а в индекс попадают десятки почти одинаковых URL. Для пользователя это одна и та же категория, а для поисковика — набор дублей, которые размывают релевантность и тянут лишний краулинговый бюджет.
Типичный пример: /catalog/?color=red&size=m, /shop/?orderby=price, /news/?s=seo. Если такие страницы не нужны в поиске, их лучше не просто «спрятать», а аккуратно закрыть от индексации и при этом не сломать переходы по сайту.
Когда это действительно проблема
Не каждая страница с параметрами должна быть закрыта. Иногда фильтр — это полноценная посадочная страница, которую специально продвигают. Но если URL меняется от каждого клика, а контент почти не отличается, это уже кандидат на исключение из индекса.
Признаки, что у вас именно дубли фильтров
- в отчётах Search Console появляются URL с параметрами, которые не нужны в поиске;
- в выдаче всплывают страницы сортировки, пагинации или внутреннего поиска;
- одна и та же категория индексируется в десятках вариантов;
- в логах видно, что бот часто ходит по однотипным URL с параметрами;
- страницы с фильтрами не дают самостоятельного трафика, но создают шум в индексе.
Диагностика: что именно закрывать
Сначала нужно понять, какой тип URL создаёт дубли. Ошибка многих — закрывать всё подряд через noindex или robots.txt, не разобравшись, где фильтр полезен, а где вреден.
Проверьте три источника
- Search Console: разделы с индексированными страницами и отчёт по страницам, которые не должны быть в поиске.
- Серверные логи или аналитика: какие URL бот запрашивает чаще всего.
- Сам сайт: какие параметры реально меняют контент, а какие только сортируют или перестраивают выдачу.
Если параметр не меняет смысл страницы, а только способ отображения, его обычно имеет смысл закрывать. Если параметр формирует отдельную коммерческую или информационную страницу, решение нужно принимать отдельно.
Что лучше: robots.txt, noindex или canonical
У каждого способа своя задача. Не стоит использовать их как взаимозаменяемые кнопки.
| Способ | Когда подходит | Ограничение |
|---|---|---|
noindex | страница доступна, но не должна попадать в поиск | бот должен увидеть тег, значит страницу нельзя полностью закрывать в robots.txt |
canonical | есть основной URL, а параметры — его вариации | не всегда убирает URL из индекса быстро и не решает проблему, если страница реально мусорная |
| robots.txt | нужно сократить обход технических URL | не гарантирует удаление уже проиндексированных страниц |
Для фильтров и сортировок чаще всего работает связка: основной URL остаётся индексируемым, а параметры получают noindex, follow или каноникал на чистую страницу. Если URL вообще не должен существовать для поиска, дополнительно ограничивают его обход.
Пошаговое решение через код темы или плагина
Если у вас есть доступ к теме или небольшому mu-plugin, можно точечно добавить мета-тег для нужных параметров. Это надёжнее, чем пытаться угадать поведение SEO-плагина в каждом шаблоне.
1. Добавьте noindex для URL с параметрами
Пример ниже ставит noindex, follow для страниц с типичными параметрами фильтра и сортировки. Логику нужно адаптировать под ваш сайт: не закрывайте всё без проверки.
<?php
add_filter('wp_robots', function ($robots) {
if (is_admin()) {
return $robots;
}
$params = array('orderby', 'filter_color', 'filter_size', 'min_price', 'max_price', 's');
foreach ($params as $param) {
if (isset($_GET[$param]) && $_GET[$param] !== '') {
$robots['noindex'] = true;
$robots['follow'] = true;
break;
}
}
return $robots;
});Этот вариант использует штатный фильтр wp_robots, который есть в современных версиях WordPress. Он не ломает шаблон и не требует правки заголовков вручную.
2. Поставьте canonical на чистый URL
Если параметр меняет только сортировку или внешний вид выдачи, canonical помогает указать на основную страницу без параметров. Для этого можно использовать фильтр wpseo_canonical в Yoast SEO или аналогичный механизм в вашем SEO-плагине. Если плагина нет, canonical можно вывести в шаблоне аккуратно и только для нужных страниц.
<?php
add_filter('get_canonical_url', function ($canonical) {
if (is_admin()) {
return $canonical;
}
if (!empty($_GET['orderby']) || !empty($_GET['filter_color']) || !empty($_GET['filter_size'])) {
return remove_query_arg(array('orderby', 'filter_color', 'filter_size', 'min_price', 'max_price'));
}
return $canonical;
});Здесь важно не подменить canonical на нерелевантный адрес. Он должен указывать на ту страницу, которая действительно является основной версией контента.
3. Ограничьте обход технических параметров в robots.txt
Если бот тратит много времени на мусорные URL, можно дополнительно закрыть их от обхода. Но это не замена noindex, а вспомогательная мера.
User-agent: *
Disallow: /*?orderby=
Disallow: /*?filter_color=
Disallow: /*?filter_size=
Disallow: /*?min_price=
Disallow: /*?max_price=Такой подход имеет смысл только если вы уверены, что эти параметры не нужны для индексации. Иначе поисковик просто не увидит страницу и не сможет обработать её корректно.
Если фильтры создаёт плагин
Многие каталоги и поисковые плагины уже умеют управлять индексированием параметров. В этом случае лучше использовать их настройки, чем городить костыли в теме. Но проверять всё равно нужно вручную: плагины часто закрывают слишком много или слишком мало.
Если у вас уже стоит SEO-плагин, проверьте, не дублирует ли он canonical и robots-теги. Два разных источника мета-данных на одной странице — частая причина конфликтов.
Чек-лист перед публикацией изменений
- основной URL категории или раздела открывается без параметров и индексируется;
- страницы с сортировкой и фильтрами получают
noindex, followили canonical на чистый адрес; - robots.txt не закрывает важные страницы случайно;
- внутренние ссылки ведут на чистые URL, а не на варианты с параметрами;
- в Search Console нет массового роста мусорных URL после внедрения;
- страницы, которые должны ранжироваться, не потеряли доступность для бота.
Как проверить, что решение сработало
Проверка должна быть не «на глаз», а по конкретным признакам.
Что смотреть после внедрения
- Откройте страницу с параметром в браузере и проверьте исходный код: должен появиться
noindexили canonical на чистый URL. - В Search Console отправьте URL на проверку и посмотрите, как Google видит страницу.
- Сравните список проиндексированных страниц до и после: мусорные параметры должны постепенно исчезать.
- Проверьте, не пропали ли из индекса важные посадочные страницы из-за слишком широкого правила.
Если страница всё ещё индексируется, не делайте вывод сразу. Поисковику нужно время, чтобы переобойти URL и обновить статус. Но если через несколько обходов ничего не меняется, ищите конфликт в шаблоне, SEO-плагине или кэше.
Частые ошибки и как их исправить
Закрыли URL в robots.txt, но он остался в индексе
Это нормальная ситуация: robots.txt не удаляет уже известные поисковику страницы. Если URL уже в индексе, нужен noindex или canonical, а не только запрет обхода.
Поставили noindex на все страницы с параметрами без разбора
Так легко убить полезные посадочные страницы. Например, если фильтр «красные кроссовки» реально нужен для продвижения, его нельзя закрывать автоматически вместе с сортировкой и техническими параметрами.
Canonical указывает на неправильную страницу
Часто это случается, когда в коде забывают удалить query string или подставляют общий URL категории вместо конкретной основной версии. Проверяйте canonical в исходнике и в инструменте проверки URL.
Конфликт с кешем
Если на сайте агрессивный page cache, изменения в robots или canonical могут не появиться сразу. После правки очистите кеш страницы, объектный кеш и CDN, если он есть.
Практические советы по безопасности и производительности
Не храните логику индексации в случайном сниппете без контроля версий. Лучше вынести её в небольшой mu-plugin или в отдельный файл темы, который можно быстро проверить и откатить.
Если параметров много, не пишите десятки однотипных условий вручную. Сначала составьте список реально используемых параметров, а потом уже добавляйте их в правило. Это уменьшит риск случайно закрыть нужный URL.
Для сайтов с большим количеством фильтров полезно дополнительно ограничить генерацию мусорных ссылок в интерфейсе: не выводить пустые комбинации, не плодить лишние параметры в URL и не создавать внутренние ссылки на технические варианты страниц.
Если нужен более широкий аудит дублей, чистки и технических мета-тегов, в WordPress-проектах часто используют Clearfy Pro: он помогает навести порядок с дублями и техническими настройками без ручного разбрасывания кода по шаблонам. Подробности есть на странице плагина.
Главная идея простая: не закрывайте от индексации всё подряд. Сначала определите, какие параметры создают мусор, затем выберите способ — noindex, canonical или robots.txt — и только после этого проверяйте результат в Search Console и в исходнике страницы.