Если архив рубрик, меток, записей автора или блога открывается нормально на первой странице, а /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.