Как убрать параметры пагинации из URL в WordPress без 404 и дублей

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

Ниже разберём именно практический сценарий: как убрать лишние параметры из URL пагинации в WordPress, сохранить рабочие страницы архива и не сломать кэш, каноникал и внутренние ссылки.

Когда проблема действительно есть

Сначала стоит понять, что именно вы хотите убрать. Это могут быть:

  • параметры сортировки и фильтров, которые добавляются к архивам;
  • дубли вида ?paged=2 вместо нормального пути /page/2/;
  • служебные параметры от темы, плагина или формы поиска;
  • URL с UTM-метками, которые попали в индекс через внутренние ссылки;
  • страницы пагинации, которые открываются, но не должны индексироваться как отдельные посадочные.

Если у вас проблема только в SEO-дублях, а сами страницы работают, решение будет одно. Если же часть URL уже отдаёт 404, сначала нужно чинить маршрутизацию, а потом чистить адреса.

Как быстро диагностировать источник дублей

Проверьте несколько вещей:

  1. Откройте архив категории или записи и посмотрите, как формируются ссылки на следующую страницу.
  2. Сравните URL в браузере и в исходном коде: иногда тема выводит один формат, а плагин — другой.
  3. Посмотрите, не добавляет ли к ссылкам фильтр из плагина кеша, SEO-модуля или кастомной темы.
  4. Проверьте, есть ли в индексе варианты с параметрами через site:example.com inurl:page или через отчёт в панели вебмастера.

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

Что делать: три рабочих подхода

Здесь важно не смешивать задачи. Один подход отвечает за формирование правильных ссылок, второй — за редирект старых адресов, третий — за контроль индексации.

ПодходКогда использоватьПлюсыМинусы
Код в теме или mu-pluginНужно убрать конкретные параметры и сохранить контрольТочно, прозрачно, без лишних зависимостейТребует проверки после обновлений
Плагин для редиректов/SEOНужно быстро закрыть старые URLУдобно для массовых правилЛегко переборщить и сломать нормальные адреса
Комбинация кода и robots/canonicalЕсть и дубли, и индексируемые параметрыЛучший контроль над SEO-сигналамиНужно аккуратно тестировать

Пошаговое решение через код

Если задача — убрать лишние параметры из ссылок пагинации, безопаснее всего не переписывать ядро, а отфильтровать итоговый URL. Для этого можно использовать paginate_links и убрать ненужные query args перед выводом.

<?php
/**
 * Убирает лишние параметры из ссылок пагинации.
 * Подходит для архивов, где пагинация должна быть чистой.
 */
add_filter( 'paginate_links', function( $link ) {
	$remove = array( 'utm_source', 'utm_medium', 'utm_campaign', 'sort', 'filter' );

	foreach ( $remove as $key ) {
		$link = remove_query_arg( $key, $link );
	}

	return $link;
} );

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

Редирект с параметров на канонический URL

Для старых адресов можно сделать 301-редирект, но только для безопасных случаев. Не редиректите всё подряд: если параметр реально меняет выдачу, например фильтр по таксономии, его нельзя бездумно выкинуть.

<?php
add_action( 'template_redirect', function() {
	if ( is_admin() ) {
		return;
	}

	if ( empty( $_SERVER['REQUEST_URI'] ) ) {
		return;
	}

	$request_uri = wp_unslash( $_SERVER['REQUEST_URI'] );
	$parts       = wp_parse_url( home_url( $request_uri ) );

	if ( empty( $parts['query'] ) ) {
		return;
	}

	parse_str( $parts['query'], $query_args );

	$remove = array( 'utm_source', 'utm_medium', 'utm_campaign' );
	$changed = false;

	foreach ( $remove as $key ) {
		if ( isset( $query_args[ $key ] ) ) {
			unset( $query_args[ $key ] );
			$changed = true;
		}
	}

	if ( ! $changed ) {
		return;
	}

	$path = isset( $parts['path'] ) ? $parts['path'] : '/';
	$url  = home_url( $path );

	if ( ! empty( $query_args ) ) {
		$url = add_query_arg( $query_args, $url );
	}

	wp_safe_redirect( $url, 301 );
	exit;
} );

Здесь логика простая: убираем только те параметры, которые не влияют на содержимое страницы. Для UTM это нормально. Для фильтров каталога — уже нет, если они меняют выборку.

Если проблема в пагинации архива, а не в параметрах

Иногда под “убрать параметры” на самом деле скрывается другая задача: сайт генерирует ссылки вида ?paged=2, а вы хотите нормальный путь /page/2/. В WordPress это обычно решается на уровне шаблона и WP_Query, а не редиректом.

Проверьте, что в кастомном запросе используется корректный параметр paged, а не page, и что в paginate_links() передаётся правильный base. Иначе ссылки будут вести в никуда или дублировать первую страницу.

<?php
$paged = max( 1, get_query_var( 'paged' ) );

$query = new WP_Query( array(
	'post_type'      => 'post',
	'posts_per_page' => 10,
	'paged'          => $paged,
) );

if ( $query->have_posts() ) {
	while ( $query->have_posts() ) {
		$query->the_post();
		the_title( '<h2>', '</h2>' );
	}

	$big = 999999999;
	echo paginate_links( array(
		'base'      => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
		'format'    => '?paged=%#%',
		'current'   => $paged,
		'total'     => $query->max_num_pages,
		'prev_text' => 'Назад',
		'next_text' => 'Вперёд',
	) );

	wp_reset_postdata();
}

Проверка результата после внедрения

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

  • Откройте архив и перейдите на вторую и третью страницу пагинации.
  • Проверьте, что ссылки не содержат лишних параметров.
  • Откройте старый URL с параметром и убедитесь, что он отдаёт 301 на чистый адрес.
  • Посмотрите исходный код страницы: canonical должен указывать на правильный URL.
  • Проверьте ответ сервера через DevTools или curl -I.

Пример проверки через консоль:

curl -I https://example.com/category/news/?utm_source=test
curl -I https://example.com/category/news/page/2/

В первом случае ожидается редирект на чистый URL. Во втором — обычный 200 OK без лишних параметров в адресе.

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

Редирект зацикливается

Это происходит, когда правило редиректа срабатывает на уже очищенный URL или вы не исключили админку и служебные запросы. Проверьте условие на наличие изменённых параметров и не трогайте URL без query string.

Пагинация открывается, но все страницы показывают один и тот же контент

Обычно проблема в том, что кастомный запрос не получает правильный paged. Для архивов это критично: WordPress может считать, что вы всегда на первой странице.

После очистки параметров пропали фильтры

Значит, вы удалили не только мусорные, но и рабочие параметры. Если параметр меняет выборку, его нельзя просто выкинуть. Для таких случаев лучше оставить его в URL и настроить canonical/robots точечно.

Кеш отдаёт старые ссылки

После правок очистите не только браузерный кеш, но и серверный, и плагин кеширования. Если CDN кэширует HTML, он тоже может продолжать отдавать старые URL.

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

Если вы делаете редиректы через код, держите список параметров коротким и явным. Не используйте универсальную схему “удалить всё, что не в whitelist”, пока не проверите все сценарии сайта. На живом проекте это часто ломает поиск, фильтры и формы.

Для больших сайтов лучше выносить такой код в mu-plugin, а не в functions.php темы. Тогда правка не исчезнет при смене шаблона и её проще сопровождать.

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

Что должно получиться в итоге

После внедрения у вас должны остаться только те URL, которые реально нужны пользователю и поисковику: чистые страницы архива, корректная пагинация, без мусорных параметров и без 404 на старых адресах. Если хотя бы один из этих пунктов не выполняется, сначала ищите источник генерации ссылок, а уже потом настраивайте редиректы.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как исправить ошибку 404 при пагинации кастомных типов записей в WordPress
27.05.2026
Как использовать WP-PageNavi для пагинации кастомных записей с фильтрами
10.02.2026
Как сделать пагинацию для постов в логических категориях WordPress
07.04.2026
Как использовать параметр paged для пагинации с несколькими WP_Query на одной странице в WordPress
30.07.2026
Как исправить неработающую пагинацию при комплексных запросах WP_Query
17.05.2026
×
Quizle
Получите больше лидов и увеличьте продажи!
-15%

на премиум плагин WordPress

Получить скидку ⋙