Как закрыть страницы по параметрам в WordPress и не сломать SEO

Проблема с URL-параметрами в WordPress обычно выглядит одинаково: одна и та же страница открывается в нескольких вариантах, а в индексе появляются дубли с ?utm_, ?sort=, ?filter=, ?replytocom= и другими параметрами. Для пользователя это почти незаметно, а для поисковика — отдельные URL, которые могут размывать сигналы и засорять отчёты в Search Console.

Ниже разберём не абстрактную «борьбу с дублями», а конкретный сценарий: какие страницы с параметрами можно закрывать, чем отличается noindex от robots.txt, когда нужен canonical, и как проверить, что решение сработало без побочных эффектов.

Когда страницы с параметрами действительно нужно закрывать

Не каждый URL с параметром — проблема. Если параметр меняет только технический вид страницы, а не её смысл, его обычно имеет смысл исключить из индексации. Если же параметр формирует отдельную полезную посадочную страницу, закрывать её нельзя.

Типичные кандидаты на закрытие

  • ?utm_source=, ?utm_medium= и другие маркетинговые метки;
  • ?replytocom= в комментариях;
  • ?sort=, ?order=, ?view=, если они только меняют порядок или представление;
  • ?filter=, если фильтр не создаёт самостоятельную SEO-страницу;
  • внутренние служебные параметры, которые не должны попадать в индекс.

Когда закрывать нельзя

Если параметр создаёт осмысленную страницу для поиска, например отдельную подборку по бренду, городу или типу материала, сначала проверьте, не нужна ли ей собственная ЧПУ-страница, а не запрет индексации. Иначе можно случайно убрать из поиска полезный трафик.

Диагностика: где именно появляются дубли

Перед правкой нужно понять, откуда идут лишние URL. Самая частая ошибка — закрыть всё через robots.txt, а потом обнаружить, что страницы продолжают попадать в индекс через внешние ссылки или уже сохранённые копии.

Проверьте три источника:

  1. внутренние ссылки на сайте — меню, фильтры, кнопки сортировки, блоки с UTM;
  2. карта сайта XML — не попадают ли туда параметры;
  3. внешние ссылки — рекламные кампании, соцсети, рассылки.

Быстрая проверка в браузере и через поиск по сайту часто уже даёт ответ. Например, если страница товара или статьи открывается и без параметра, и с ним, а контент одинаковый, это кандидат на canonical и, возможно, noindex.

Что выбрать: canonical, noindex или robots.txt

У этих инструментов разная задача. Их нельзя использовать как взаимозаменяемые кнопки.

ПодходЧто делаетКогда использоватьОграничение
canonicalПодсказывает поисковику основную версию страницыЕсли параметр не меняет смысл контентаЭто рекомендация, а не жёсткий запрет
noindexЗапрещает индексировать страницуЕсли страница не должна быть в поискеСтраница должна быть доступна для обхода
robots.txtОграничивает обход роботомЕсли нужно снизить crawl waste на массовых URLНе гарантирует удаление уже известного URL из индекса

На практике для параметров чаще всего используют связку: canonical на чистую версию + noindex для страниц, которые не должны индексироваться. robots.txt применяют осторожно, когда нужно сократить обход большого числа технических URL, но не как единственный способ «удалить из поиска».

Пошаговое решение в WordPress

Самый надёжный вариант — обработать параметры на уровне темы или небольшого плагина. Так вы не зависите от случайных настроек SEO-плагина и можете точечно управлять логикой.

Шаг 1. Определите список параметров

Сначала зафиксируйте, какие параметры нужно закрывать. Не стоит писать универсальный запрет на все query string: можно сломать поиск, фильтры и авторизацию.

$blocked_params = array( 'utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'replytocom', 'sort', 'order', 'view' );

Шаг 2. Добавьте noindex и canonical для нужных URL

Ниже пример для functions.php или собственного мини-плагина. Он добавляет noindex,follow на страницы с параметрами из списка и выводит canonical на чистый URL без query string.

add_action( 'wp_head', function () {
	if ( is_admin() || is_feed() ) {
		return;
	}

	$blocked_params = array( 'utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'replytocom', 'sort', 'order', 'view' );
	$has_blocked_param = false;

	foreach ( $blocked_params as $param ) {
		if ( isset( $_GET[ $param ] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
			$has_blocked_param = true;
			break;
		}
	}

	if ( ! $has_blocked_param ) {
		return;
	}

	$canonical = remove_query_arg( $blocked_params, home_url( add_query_arg( array(), $GLOBALS['wp']->request ) ) );
	$canonical = strtok( $canonical, '?' );

	echo '<meta name="robots" content="noindex,follow">' . "\n";
	echo '<link rel="canonical" href="' . esc_url( $canonical ) . '">' . "\n";
}, 1 );

Здесь есть важный нюанс: если у URL уже есть другие параметры, не нужно слепо вырезать всё подряд. Убирайте только те параметры, которые вы действительно считаете техническими или маркетинговыми.

Шаг 3. Для массовых параметров добавьте правило в robots.txt

Если сайт генерирует много мусорных URL, можно дополнительно ограничить обход. Но делайте это только для очевидно технических параметров. Пример для виртуального robots.txt:

add_filter( 'robots_txt', function ( $output, $public ) {
	$output .= "\nUser-agent: *\n";
	$output .= "Disallow: /*?replytocom=\n";
	$output .= "Disallow: /*?utm_\n";
	return $output;
}, 10, 2 );

Такой подход не заменяет noindex. Он лишь уменьшает количество обходов. Если URL уже известен поисковику, одного Disallow может быть недостаточно.

Шаг 4. Уберите лишние параметры из внутренних ссылок

Если UTM или служебные параметры добавляются внутри сайта, лучше исправить источник, а не только «лечить» последствия. Проверьте шаблоны кнопок, меню, блоки в редакторе и настройки плагинов аналитики.

  • не добавляйте UTM в внутренние ссылки между страницами сайта;
  • не передавайте параметры в canonical;
  • не генерируйте ссылки с параметрами в XML Sitemap;
  • не закрывайте через robots.txt страницы, которые должны быть доступны пользователю.

Как проверить, что решение сработало

Проверка должна быть не визуальной, а технической. Откройте URL с параметром и убедитесь, что:

  1. в исходном коде есть <meta name="robots" content="noindex,follow">;
  2. canonical указывает на чистую версию страницы;
  3. страница отдаёт 200 OK, а не редиректит без необходимости;
  4. в XML Sitemap нет URL с параметрами;
  5. в Search Console URL проходит проверку как неиндексируемый или канонический на чистую версию.

Для быстрой проверки можно использовать curl:

curl -I "https://example.com/page/?utm_source=test"

И отдельно посмотреть HTML:

curl -s "https://example.com/page/?utm_source=test" | grep -iE "robots|canonical"

Если canonical не появился или указывает на тот же URL с параметром, значит логика фильтрации работает неправильно.

Частые ошибки и как их исправить

Закрыли всё через robots.txt

Это самая частая ошибка. Disallow не удаляет URL из индекса автоматически. Если страница уже известна поисковику, она может остаться в выдаче без сниппета. Исправление: вернуть доступ для обхода и добавить noindex или canonical.

Поставили canonical на неправильную страницу

Иногда canonical указывает на главную, категорию или вообще на URL с параметром. Тогда поисковик получает противоречивые сигналы. Исправление: canonical должен вести на чистую, логически основную версию страницы.

Закрыли полезные страницы с фильтрами

Если фильтр реально отвечает на пользовательский запрос, его нельзя бездумно закрывать. В таком случае лучше создать отдельную SEO-страницу с ЧПУ и уже её продвигать, а параметрический вариант оставить техническим.

Не убрали параметры из внутренних ссылок

Если сайт сам постоянно генерирует URL с UTM или сортировкой, поисковик будет снова и снова находить дубли. Исправление: найти источник в шаблоне, блоке или настройке плагина и убрать параметры на уровне генерации ссылок.

Безопасность и производительность

Любая правка, которая затрагивает wp_head и robots_txt, должна быть протестирована на staging-копии. Ошибка в условии может случайно закрыть от индексации весь сайт или, наоборот, оставить открытыми технические URL.

Если вы не хотите писать код вручную, можно использовать SEO-плагин или комплексную оптимизацию через Clearfy Pro: у него есть инструменты для работы с дублями, техническими настройками и чисткой сайта. Но даже в этом случае полезно понимать, какие именно URL вы закрываете и почему. Ссылка на продукт: https://wpshop.ru/plugins/clearfy.

Для производительности важно не только закрыть индексацию, но и уменьшить количество бесполезных обходов. Чем меньше мусорных URL генерирует сайт, тем меньше нагрузка на сервер и тем чище отчёты в инструментах вебмастера.

Практический чек-лист перед публикацией изменений

  • составлен список параметров, которые нужно закрыть;
  • проверено, что эти параметры не создают полезные SEO-страницы;
  • добавлен noindex,follow для нужных URL;
  • canonical ведёт на чистую версию страницы;
  • при необходимости добавлены правила в robots.txt;
  • убраны внутренние ссылки с лишними параметрами;
  • проверка выполнена через исходный код и curl;
  • изменения протестированы на staging до выката в продакшен.

Если после внедрения дубли всё ещё появляются, обычно проблема не в мета-тегах, а в источнике генерации URL: шаблон, плагин фильтрации, рекламные метки или sitemap. В таких случаях нужно идти от источника, а не пытаться бесконечно «подчищать» индексацию постфактум.

Как убрать дубли страниц с пагинацией в WordPress
29.08.2026
Как создать динамические формы с помощью WPRemark в WordPress
30.12.2025
Как удалить или отключить Gutenberg в WordPress
05.03.2026
Как удалить все оставшиеся комментарии в WordPress через базу данных
27.12.2025
Как использовать hooks в WordPress для расширения функциональности
04.12.2025

Мы занимаемся разработкой приложений и плагинов для WordPress. Ниже предлагаем ознакомиться с ними.