Редирект пагинации WordPress на /all/ без сохранения номера страницы
При перенаправлении страниц пагинации в WordPress, например, с /articles/other/page/2/ на /all/, многие сталкиваются с проблемой: вместо перехода на /all/ происходит редирект на /all/page/2/. Это связано с тем, что сервер автоматически подставляет параметры пагинации из исходного URL. Разберём, как правильно настроить 301 редирект, чтобы избавиться от ненужных номеров страниц.
Почему возникает редирект на /all/page/2/?
При использовании простого правила Redirect 301 /articles/other/page/2/ /all/ Apache (или другой веб-сервер) интерпретирует запрос как перенаправление всего пути, включая сегмент /page/2/. Однако WordPress или плагины часто перехватывают редирект и добавляют параметр пагинации обратно, поскольку в исходном URL был номер страницы. В результате вы получаете цепочку: /articles/other/page/2/ → /all/ → /all/page/2/.
Как правильно настроить 301 редирект для пагинации
Чтобы перенаправить все страницы пагинации рубрики на /all/ без сохранения номера страницы, используйте одно из следующих решений.
Способ 1: Использование RedirectMatch (рекомендуется)
В файл .htaccess добавьте правило с регулярным выражением:
RedirectMatch 301 ^/articles/other/page/\d+/$ /all/Это правило перехватывает любой номер страницы (\d+) и перенаправляет строго на /all/. Обратите внимание на экранирование слешей и цифр.
Способ 2: Использование mod_rewrite
Если RedirectMatch не сработал, примените mod_rewrite:
RewriteEngine On
RewriteRule ^articles/other/page/\d+/$ /all/ [R=301,L]Убедитесь, что RewriteEngine включён и правило стоит до стандартных правил WordPress.
Способ 3: Плагин редиректов (для новичков)
Установите плагин Redirection или Yoast SEO. В интерфейсе создайте правило: исходный URL - /articles/other/page/(.*), целевой - /all/, тип - 301. Плагин сам обработает регулярные выражения и исключит добавление номера страницы.
Проверка и устранение ошибок
После добавления правила обязательно проверьте результат:
- Откройте в браузере
/articles/other/page/2/- вы должны попасть на/all/. - Проверьте код ответа сервера (должен быть 301).
- Убедитесь, что нет циклических редиректов - для этого используйте онлайн-инструменты вроде Redirect Checker.
Если проблема сохраняется, очистите кеш WordPress и браузера, а также проверьте, нет ли конфликтующих правил в .htaccess.
Заключение
Правильная настройка 301 редиректа с пагинации на /all/ требует использования регулярных выражений, чтобы отбросить номер страницы. Используйте RedirectMatch или mod_rewrite - это гарантирует, что пользователи и поисковые системы попадут именно на /all/, а не на /all/page/2/. После настройки проверьте редирект и обновите карту сайта.