Сценарий знакомый: главная рубрика открывается нормально, а /page/2/, /page/3/ или страницы архива автора отдают 404. Иногда это всплывает после смены темы, установки SEO-плагина, правки .htaccess или переноса сайта на новый сервер. Проблема не только в том, что пользователь не может дойти до старых записей. Для поисковика это еще и сигнал, что структура архива сломана.
Ниже — практический разбор: как понять, где именно ломается пагинация, что проверить в WordPress и как исправить это без лишних костылей.
Когда 404 на пагинации — это именно проблема WordPress
Сначала стоит отделить поломку маршрутизации от обычной ситуации, когда на странице реально нет контента. Если у рубрики всего 8 записей, то /page/2/ может быть недоступна просто потому, что второй страницы не существует. Но если записей много, а вторая страница архива внезапно стала 404, почти всегда дело в одном из трех мест:
- сбились правила пермалинков;
- тема или плагин неправильно формируют ссылки пагинации;
- серверный редирект, кэш или кастомный rewrite перехватывает запрос раньше WordPress.
Что проверить в первую очередь
Откройте проблемный архив и сравните поведение на первой и второй странице. Если первая страница работает, а вторая нет, это уже хороший признак того, что проблема не в самом архиве, а в правилах маршрутизации или генерации ссылок.
Полезно проверить:
- работают ли
/page/2/у рубрик, тегов и автора одинаково; - не сломались ли ссылки после смены структуры постоянных ссылок;
- не стоит ли на сайте плагин, который меняет архивы, пагинацию или канонические URL;
- не отдает ли сервер 301/302 на другой URL до того, как WordPress успевает обработать запрос.
Диагностика: где именно ломается маршрут
Самый быстрый способ понять источник ошибки — посмотреть, что реально возвращает сервер. Если у вас есть доступ к консоли, проверьте заголовки ответа и итоговый код.
curl -I https://example.com/category/news/page/2/Если вместо 200/301 вы видите 404, а в браузере страница тоже не открывается, значит запрос не доходит до корректного шаблона архива. Если же сервер отдает 200, но контент не тот, проблема уже в теме или плагине, который подменяет запрос.
В админке WordPress полезно временно открыть Настройки → Постоянные ссылки и просто нажать «Сохранить изменения». Это не магия, а принудительная пересборка rewrite-правил. Если после этого пагинация ожила, значит проблема была в устаревших правилах.
Пошаговое решение без лишних правок
1. Сбросьте правила пермалинков
Это безопасный первый шаг. Он не меняет структуру URL, а только обновляет правила маршрутизации. После сохранения пермалинков проверьте проблемный архив еще раз.
Если доступен WP-CLI, можно сделать это и из консоли:
wp rewrite flush --hardКоманда полезна после миграции, смены темы или массовых правок rewrite-правил. Но не стоит запускать ее на каждом запросе или в cron: это лишняя нагрузка и плохая практика.
2. Проверьте, как тема выводит пагинацию
Во многих темах ошибка появляется не в WordPress как таковом, а в шаблоне архива. Частая проблема — ручная сборка пагинации через paginate_links() с неверным base или format. Если URL строится неправильно, вторая страница может вести в никуда.
Рабочий пример для архивов:
<?php
$big = 999999999;
echo paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '',
'current' => max( 1, get_query_var( 'paged' ) ),
'total' => $wp_query->max_num_pages,
'mid_size' => 2,
'prev_text' => '← Назад',
'next_text' => 'Вперед →',
) );
?>Если у вас кастомный WP_Query, не забудьте передать правильный параметр paged. Иначе первая страница будет работать, а переходы дальше — нет.
<?php
$paged = max( 1, get_query_var( 'paged' ) );
$query = new WP_Query( array(
'post_type' => 'post',
'posts_per_page' => 10,
'paged' => $paged,
) );
?>3. Убедитесь, что rewrite не перехватывает пагинацию
Если в теме или плагине есть собственные правила add_rewrite_rule(), они могут конфликтовать с архивной пагинацией. Это особенно заметно, когда добавляют красивые URL для разделов, фильтров или страниц каталога.
Пример корректного добавления правила, которое не ломает стандартную пагинацию, — когда вы явно задаете отдельный шаблон и не перекрываете общий архивный путь:
<?php
add_action( 'init', function() {
add_rewrite_rule(
'^catalog/([^/]+)/?$',
'index.php?post_type=product&name=$matches[1]',
'top'
);
} );После изменения rewrite-правил обязательно пересохраните постоянные ссылки. Без этого новое правило может не попасть в таблицу маршрутизации.
Сравнение подходов: плагин, код или правка темы
| Подход | Когда уместен | Плюсы | Минусы |
|---|---|---|---|
| Сброс пермалинков | После миграции, смены темы, обновления rewrite | Быстро, безопасно | Не лечит ошибку в шаблоне |
| Правка шаблона архива | Если сломана генерация ссылок пагинации | Точный контроль | Нужен доступ к теме и понимание WP_Query |
| Плагин для SEO/чистки | Если проблема связана с дублями, canonical, лишними архивами | Меньше ручного кода | Легко скрыть первопричину, если не проверить шаблоны |
Если на сайте много технического мусора — дубли архивов, лишние мета-теги, конфликтующие canonical и похожие вещи — иногда удобнее сначала навести порядок в настройках SEO-плагина. Например, в Clearfy Pro есть инструменты для чистки WordPress и удаления части дублей, но использовать такие плагины стоит как дополнение к диагностике, а не как замену проверке шаблонов.
Проверка результата после внедрения
После исправления не ограничивайтесь ручным открытием одной страницы. Проверьте несколько сценариев:
/page/2/у рубрики с большим числом записей;- страницу автора, если она используется в индексации;
- архив тегов, если он открыт для поиска;
- страницу с кастомным типом записи, если у него включена архивная пагинация.
Дальше смотрите не только код ответа, но и сам HTML. На второй странице должны быть корректные ссылки rel=