Если вы перенесли страницу, поменяли URL или склеиваете дубли, 301 редирект нужен сразу: он сохраняет переходы со старого адреса и подсказывает поисковым системам, что страница переехала навсегда. В WordPress это можно сделать без плагинов — на уровне сервера или через файл .htaccess. Для небольшого сайта это часто самый чистый вариант: меньше нагрузки, меньше лишнего кода и меньше риска, что редиректы начнут конфликтовать между собой.
Ниже — практический разбор, как настроить 301 редиректы безопасно, когда использовать Apache, когда Nginx, как не получить цепочки редиректов и что проверить после изменений.
Что именно нужно настроить и где это делать
В WordPress редирект можно организовать тремя способами: через сервер, через PHP в теме или через плагин. Для постоянных перенаправлений лучше выбирать серверный уровень. Он срабатывает раньше, не зависит от темы и не ломается при смене шаблона.
Для сайта на Apache обычно используют .htaccess. Для Nginx правила пишут в конфигурации виртуального хоста. Если у вас обычный shared-хостинг, почти всегда доступен только .htaccess. Если есть VPS или выделенный сервер, чаще настраивают Nginx или Apache на уровне конфигурации сервера.
Перед правками сделайте резервную копию файла конфигурации или хотя бы сохраните его текущую версию. Ошибка в правиле редиректа легко может отправить весь сайт в бесконечный цикл или сделать его недоступным.
Редирект одной страницы в .htaccess
Если сайт работает на Apache, самый простой вариант — добавить правило в .htaccess. Обычно этот файл лежит в корне WordPress рядом с wp-config.php. Правило лучше вставлять выше стандартного блока WordPress с # BEGIN WordPress, чтобы оно сработало раньше внутренних правил CMS.
Для переноса одной страницы используйте такое правило:
Redirect 301 /staryj-url/ https://wpdemo.ru/novyj-url/Здесь старый путь указан относительно домена, а новый адрес — полностью. Это удобно, когда страница переехала на другой URL внутри того же сайта.
Если нужно перенаправить не только одну страницу, а, например, весь раздел, лучше использовать правило RedirectMatch или модуль mod_rewrite. Но для большинства типовых задач достаточно именно точечного редиректа.
Когда лучше использовать RewriteRule
Если старый и новый адреса отличаются сложнее, чем просто один путь, удобнее писать через RewriteRule. Например, когда нужно убрать index.php, заменить структуру URL или сделать массовое перенаправление по шаблону.
Пример для одного адреса:
RewriteEngine On
RewriteRule ^staryj-url/?$ https://wpdemo.ru/novyj-url/ [R=301,L]Флаг R=301 задаёт постоянный редирект, а L останавливает дальнейшую обработку правилами Apache. Если в файле уже есть строка RewriteEngine On, второй раз добавлять её не нужно.
Как настроить редирект на Nginx
На Nginx редиректы не пишутся в .htaccess, потому что этот сервер его не использует. Правило добавляют в конфигурацию сайта, обычно в блок server. После правки конфигурацию нужно проверить и перезагрузить Nginx.
Пример редиректа одной страницы:
location = /staryj-url/ {
return 301 https://wpdemo.ru/novyj-url/;
}Если нужен редирект всего пути, а не точное совпадение, можно использовать более общий вариант:
rewrite ^/staryj-url/?$ https://wpdemo.ru/novyj-url/ permanent;На практике для точечных перенаправлений return 301 обычно предпочтительнее: правило читается проще и отрабатывает быстрее.
После изменения конфигурации проверьте её синтаксис командой nginx -t. Только если ошибок нет, перезагружайте сервер. Если доступ к консоли ограничен, правки лучше делать через панель хостинга или попросить поддержку внести правило за вас.
Как не создать цепочку редиректов
Цепочка редиректов возникает, когда старый адрес ведёт на промежуточный, а тот — ещё дальше. Например, /page-old/ → /page-older/ → /page-new/. Для пользователя это лишняя задержка, а для поисковых систем — лишние переходы и риск потерять часть сигнала.
Правило простое: старый URL должен вести сразу на финальный адрес. Если вы уже меняли страницу несколько раз, обновите старые правила так, чтобы все они указывали на конечную версию, а не на предыдущую.
Особенно часто цепочки появляются после смены структуры постоянных ссылок в WordPress. В этом случае сначала проверьте, не создаёт ли сам WordPress редирект на уровне canonical или внутренних правил, а потом добавляйте свои перенаправления. Если старый и новый адрес отличаются только слэшем в конце, протоколом или www/non-www, не дублируйте это отдельными правилами в нескольких местах.
Как перенаправить старый URL на новый без потери трафика
Если вы меняете адрес опубликованной страницы, редирект должен появиться одновременно с публикацией нового URL. Иначе пользователи и поисковые роботы успеют увидеть 404. Для переноса контента действуйте так:
- Сначала создайте новую страницу или запишите её итоговый URL.
- Проверьте, что контент действительно переехал и старый адрес больше не нужен как отдельная страница.
- Добавьте 301 редирект со старого адреса на новый.
- Откройте старый URL в браузере и убедитесь, что он сразу ведёт на нужную страницу.
Если у старой страницы были внешние ссылки или трафик из поиска, не удаляйте её без редиректа. Для поисковых систем 301 — это сигнал, что адрес изменился навсегда, и именно он помогает перенести накопленный вес на новый URL.
Если на сайте есть похожие материалы, которые вы объединяете в один, редиректите все старые адреса на один финальный. Не распределяйте их по разным страницам «по смыслу» — это только распыляет сигналы и усложняет поддержку.
Проверка редиректа после настройки
Проверять нужно не только факт перехода, но и код ответа. Вам нужен именно 301, а не 302 и не цепочка из нескольких переходов.
Самый простой способ — открыть старый адрес в браузере и посмотреть, куда он ведёт. Но этого недостаточно: браузер может скрыть промежуточные шаги. Лучше использовать любой инструмент проверки заголовков или команду curl. Например:
curl -I https://wpdemo.ru/staryj-url/В ответе должен быть статус 301 Moved Permanently и заголовок Location с конечным адресом. Если вы видите сначала 301, потом ещё один 301, значит цепочка всё ещё есть. Если вместо редиректа получаете 404, правило не сработало или путь указан неверно.
Ещё один полезный тест — проверить конечный URL напрямую. Он должен открываться без дополнительного перенаправления и отдавать 200 OK.
Типичные ошибки, из-за которых редирект не работает
Чаще всего проблема не в WordPress, а в деталях правила. Вот что стоит проверить в первую очередь:
- старый путь указан без начального слэша или с лишним слэшем в конце;
- правило добавлено ниже блока WordPress и не успевает сработать;
- на Nginx правку внесли в
.htaccess, который сервер вообще не читает; - редирект ведёт на адрес, который сам перенаправляет дальше;
- новая страница уже существует, но её URL отличается от того, что указан в правиле;
- сайт работает по HTTPS, а в правиле указан старый HTTP-адрес без необходимости.
Если редирект нужен для удаления дублей, не путайте его с каноническим адресом. rel=canonical не заменяет 301: canonical подсказывает предпочтительную версию страницы, но не перенаправляет пользователя и не убирает старый URL из обращения.
Когда без плагина лучше, а когда уже неудобно
Без плагина удобно делать точечные и понятные редиректы: перенос одной страницы, смена структуры URL, объединение нескольких дублей в один адрес. Такой подход проще контролировать и легче отлаживать.
Если редиректов десятки или сотни, ручное управление через .htaccess или конфиг Nginx быстро становится неудобным. Тогда уже имеет смысл вынести правила в отдельный процесс управления, чтобы не править серверный файл каждый раз вручную. Но для типовой задачи «перенёс страницу — поставил 301» серверного решения обычно достаточно.
Если вам нужно не только убрать дубли, но и почистить сайт от лишних технических страниц, иногда помогает связка с инструментами для SEO-оптимизации. Но сам 301 редирект всё равно лучше держать на уровне сервера: так он будет работать независимо от темы WordPress и состояния плагинов.
Если коротко: для одного-двух адресов используйте серверные правила, проверяйте код ответа и сразу убирайте цепочки. Это самый надёжный способ настроить 301 редиректы в WordPress без плагинов и не потерять трафик на переезде.