Страницы с параметрами в URL — типичная причина дублей в WordPress. Один и тот же контент может открываться как /catalog/, /catalog/?sort=price, /catalog/?utm_source=... или /blog/?page=2. Для пользователя это разные адреса, а для поисковика — часто почти одинаковые страницы. Если такие URL начинают попадать в индекс, сайт быстро получает мусор в отчётах и распыление веса.
Ниже — рабочая схема: как найти проблемные параметры, чем закрывать их от индексации, когда достаточно noindex, а когда лучше убрать саму генерацию дубля. Отдельно разберём, как проверить результат и где обычно ошибаются.
Когда проблема действительно есть
Не каждый URL с параметром нужно закрывать. Иногда параметр нужен для работы сайта: сортировка, фильтр, пагинация, поиск, технические метки. Проблема начинается, когда такие адреса:
- попадают в sitemap или внутренние ссылки;
- отдают тот же контент, что и каноническая страница;
- индексируются массово через фильтры, UTM-метки и служебные параметры;
- создают сотни почти одинаковых страниц в Search Console.
Как быстро диагностировать дубли
Сначала проверьте, какие параметры реально живут на сайте. Самый простой путь — посмотреть отчёты поисковой системы и логи переходов, а затем вручную открыть несколько URL с параметрами. Важно понять не только наличие дубля, но и его тип: это отдельная полезная страница или просто копия основного URL.
Полезно сравнить:
- код ответа страницы;
- наличие
<meta name="robots" content="noindex">; - канонический URL;
- попадает ли адрес в XML-карту сайта;
- есть ли ссылка на этот URL внутри сайта.
Что делать: три рабочих подхода
В WordPress обычно используют один из трёх вариантов: закрыть страницу от индексации через noindex, убрать параметр из генерации URL или настроить каноникал на основную страницу. Выбор зависит от того, нужен ли этот адрес пользователю и должен ли он вообще существовать как отдельная страница.
| Подход | Когда подходит | Минус |
|---|---|---|
noindex | Страница нужна пользователю, но не должна индексироваться | URL остаётся доступным и может обходиться роботами |
| Канонический URL | Есть дубль с параметром, но контент один и тот же | Не всегда достаточно, если дубли активно генерируются |
| Удаление параметра из логики сайта | Параметр не нужен для SEO и не влияет на работу | Требует правки кода или плагина |
Пошаговое решение через код
Если нужно закрыть от индексации страницы с конкретными параметрами, проще всего добавить noindex, follow на фронтенде. Это не удаляет страницу, но говорит роботам не включать её в индекс. Подход годится для UTM-меток, сортировки, служебных фильтров и некоторых поисковых страниц.
<?php
add_action( 'wp_head', function () {
if ( is_admin() ) {
return;
}
$blocked_params = array( 'utm_source', 'utm_medium', 'utm_campaign', 'sort', 'filter', 'ref' );
foreach ( $blocked_params as $param ) {
if ( isset( $_GET[ $param ] ) ) {
echo '<meta name="robots" content="noindex, follow">' . "\n";
break;
}
}
} );Этот вариант работает, если параметр действительно не должен индексироваться. Но у него есть ограничение: если страница уже попала в индекс, одного мета-тега может быть мало. Тогда нужно дождаться переобхода или дополнительно убрать причину появления дубля.
Когда лучше ставить канонический URL
Если параметр меняет только способ отображения, а не сам контент, полезно указать канонический адрес. Например, /catalog/?sort=price может вести на ту же страницу каталога, что и /catalog/. В таком случае каноникал помогает поисковику понять, какая версия основная.
<?php
add_filter( 'get_canonical_url', function ( $canonical, $post ) {
if ( isset( $_GET['sort'] ) || isset( $_GET['filter'] ) ) {
return get_permalink( $post );
}
return $canonical;
}, 10, 2 );Этот пример уместен для записей и страниц. Для архивов и нестандартных шаблонов может понадобиться отдельная логика через wp_get_canonical_url() или правка темы. Главное — не подменять каноникал на случайный адрес и не указывать на страницу, которая сама закрыта от индексации.
Если параметр не нужен вообще
Иногда правильнее не закрывать дубль, а убрать саму причину его появления. Например, если UTM-метки используются только для аналитики, не стоит генерировать на их основе отдельные индексируемые страницы. Для фильтров и сортировки лучше либо оставить их без индексации, либо перевести на AJAX, если это оправдано архитектурой проекта.
Проверка здесь простая: если параметр не влияет на уникальный контент и не нужен в поиске, он не должен создавать отдельный URL в карте сайта, хлебных крошках и внутренних ссылках.
Проверка результата после внедрения
После правки не ограничивайтесь просмотром исходника. Проверьте несколько вещей вручную и в инструментах поисковой системы.
- Откройте URL с параметром и убедитесь, что в
<head>появилсяnoindex, follow. - Проверьте, что канонический URL указывает на основную страницу.
- Убедитесь, что параметризованный адрес не добавляется в XML sitemap.
- Сравните ответ сервера для основного URL и URL с параметром.
- В Search Console отправьте страницу на переобход, если она уже была в индексе.
Если вы используете командную строку на сервере, удобно проверить заголовки и HTML так:
curl -I "https://example.com/catalog/?sort=price"
curl -s "https://example.com/catalog/?sort=price" | grep -i "robots\|canonical"По этим двум запросам видно, отдаёт ли страница нужный HTML и не ломается ли каноникал после правки темы или плагина.
Частые ошибки и как их исправить
Закрыли не тот параметр
Часто в коде проверяют только $_GET['utm_source'], а в индекс всё равно попадают другие параметры: sort, page, filter, s для поиска. Сначала составьте список реально используемых параметров, а потом уже пишите правило.
Поставили noindex, но оставили ссылку в меню или блоке
Если дубль активно связан внутренними ссылками, робот будет возвращаться к нему снова и снова. В таком случае лучше убрать ссылку или заменить её на канонический адрес.
Закрыли страницу, которая должна ранжироваться
Это типичная ошибка с фильтрами и поиском по сайту. Если страница полезна и должна собирать трафик, не ставьте на неё бездумный noindex. Сначала проверьте, есть ли у неё уникальный контент и поисковый спрос.
Сломали каноникал в теме
Иногда тема или SEO-плагин уже выводят canonical, а дополнительный код добавляет второй тег. В результате в HTML появляется конфликт. После внедрения проверьте исходник страницы и оставьте только один источник канонического URL.
Безопасность и производительность
Если вы закрываете параметры через код, не делайте это на основе «всех GET-запросов подряд». Иначе можно случайно закрыть полезные страницы поиска, фильтров или пагинации. Лучше вести явный список параметров и документировать его в теме или mu-plugin.
Для производительности полезно ещё и сократить количество URL, которые вообще генерируются внутри сайта. Чем меньше мусорных ссылок в шаблонах, тем меньше обход роботов и тем чище отчёты. Если на проекте уже накопилось много дублей и служебных URL, имеет смысл проверить настройки SEO-плагина и чистку лишних архивов. В некоторых случаях для этого удобен Clearfy Pro, но только как инструмент настройки, а не как замена пониманию логики URL.
Короткий чек-лист перед публикацией
- Список параметров составлен и не включает лишнего.
- Для нужных URL добавлен
noindex, followили каноникал. - Параметризованные адреса не попадают в sitemap.
- Внутренние ссылки ведут на основную версию страницы.
- В исходнике нет двух canonical или конфликтующих meta robots.
- После правки страница проверена через
curlи в поисковых инструментах.
Если задача сводится к чистке дублей и технической оптимизации, сначала решайте источник проблемы, а уже потом — индексацию. Это почти всегда надёжнее, чем массово закрывать URL постфактум.