Как исправить 404 на страницах пагинации архива в WordPress

Если архив рубрик, меток, записей автора или блога открывается нормально на первой странице, а /page/2/ и дальше уже отдают 404, проблема обычно не в контенте, а в правилах перезаписи, настройках постоянных ссылок, конфликте с плагином или в том, как тема выводит архивы. Для WordPress это типичный технический сбой: сайт живой, но пагинация ломается только на части URL.

Ниже — практический разбор: как быстро понять источник 404, что проверить в админке и коде, и как убедиться, что исправление действительно сработало.

Когда это именно проблема пагинации архива

Сначала важно не перепутать сломанный архив с другой ошибкой. Если 404 появляется только на URL вида /category/news/page/2/, /tag/seo/page/3/, /author/ivanov/page/2/ или на главной блога /blog/page/2/, это почти всегда история про rewrite rules или конфликт шаблона.

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

Быстрая диагностика

  • Проверьте, открывается ли первая страница архива без /page/2/.
  • Сравните поведение на рубрике, метке и архиве автора: если ломается всё одинаково, ищите системную причину.
  • Посмотрите, нет ли редиректа на 404 в логах плагина безопасности или в .htaccess.
  • Отключите на время плагины, которые меняют SEO-URL, редиректы, кэш или безопасность.

Почему WordPress отдаёт 404 на /page/2/

У пагинации архива есть несколько частых источников поломки. В реальной практике чаще всего виноват один из этих сценариев:

  • не обновились правила перезаписи после смены структуры постоянных ссылок;
  • плагин SEO или кэш подменяет canonical/redirect и уводит запрос не туда;
  • тема выводит архив через кастомный запрос, но не учитывает текущую страницу пагинации;
  • на сервере включены жёсткие редиректы, которые конфликтуют с page/2;
  • архивный шаблон использует неправильную пагинацию, например, через query_posts() или без учёта paged.

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

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

1. Сбросьте правила перезаписи

Самый безопасный первый шаг — обновить правила permalink. Это не меняет контент и часто сразу чинит 404 после миграции, смены темы или установки SEO-плагина.

В админке откройте Настройки → Постоянные ссылки и просто нажмите Сохранить изменения. WordPress пересоберёт rewrite rules.

Если нужен программный способ, например после деплоя, можно один раз вызвать flush в плагине активации. Делать это на каждом запросе нельзя.

<?php
register_activation_hook(__FILE__, function () {
    flush_rewrite_rules();
});

register_deactivation_hook(__FILE__, function () {
    flush_rewrite_rules();
});

Важно: flush_rewrite_rules() — тяжёлая операция. Её используют только при активации/деактивации плагина или при ручном обслуживании, но не в init.

2. Проверьте, как тема формирует пагинацию

Если архив строится через собственный запрос, пагинация должна учитывать текущую страницу. Ошибка здесь выглядит так: первая страница работает, а /page/2/ возвращает 404 или дублирует первую страницу.

Правильный подход — использовать paged и не заменять главный запрос без необходимости.

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

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

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

    echo paginate_links([
        'total'   => $query->max_num_pages,
        'current' => $paged,
    ]);

    wp_reset_postdata();
}

Если в шаблоне используется query_posts(), лучше убрать его. Эта функция ломает основной запрос и часто становится причиной странных 404 на архивной пагинации.

3. Проверьте конфликты с редиректами и SEO-плагинами

Иногда WordPress сам понимает URL, но плагин редиректов или SEO-расширение отправляет пользователя на канонический URL без страницы пагинации. В результате сервер отвечает 200 на первую страницу, а /page/2/ уходит в 404 или редиректится на корень архива.

Что проверить:

  • правила редиректов в плагинах типа Redirection;
  • настройки canonical в SEO-плагине;
  • не включено ли принудительное удаление /page/ в кастомных фильтрах;
  • нет ли в .htaccess правил, которые режут URL с числом после page.

Если вы добавляли свои фильтры, проверьте, не переписывают ли они архивные ссылки. Например, такой код может сломать пагинацию, если его применили слишком широко:

<?php
add_filter('redirect_canonical', function ($redirect_url, $requested_url) {
    if (strpos($requested_url, '/page/') !== false) {
        return false;
    }
    return $redirect_url;
}, 10, 2);

Этот приём не является универсальным решением. Его используют только для диагностики, когда нужно понять, не мешает ли canonical-редирект. Оставлять такой фильтр без причины не стоит.

4. Если архив кастомный — проверьте запрос и шаблон

На страницах типа page-blog.php или в шаблонах блоков часто делают собственный запрос записей. Тогда WordPress не всегда сам подставляет нужную страницу. Для архивов лучше опираться на главный запрос, а не строить всё вручную.

Если всё же нужен кастомный вывод, убедитесь, что в запрос передаётся paged, а не только posts_per_page. И не забывайте про wp_reset_postdata() после цикла.

Для изменения основного запроса на архиве можно использовать pre_get_posts. Это безопаснее, чем подменять запрос в шаблоне.

<?php
add_action('pre_get_posts', function (WP_Query $query) {
    if (is_admin() || ! $query->is_main_query()) {
        return;
    }

    if ($query->is_category() || $query->is_tag() || $query->is_home()) {
        $query->set('posts_per_page', 12);
    }
});

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

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

Как исключить технические страницы WordPress из индексации без потери нужного трафика
27.08.2026
Как исправить 404 на страницах авторов в WordPress
23.08.2026
Как настроить robots.txt для файлов медиасайта в WordPress
06.09.2026
Как отключить XML-RPC и защитить wp-login.php от brute force в WordPress
03.09.2026
Как отключить XML-RPC в WordPress и не сломать Jetpack, мобильные приложения и внешние сервисы
03.09.2026