301 редирект нужен, когда страница переехала на новый адрес, URL изменился после правки структуры сайта или старый контент удалён, но у него уже есть ссылки и трафик. В WordPress это можно сделать несколькими способами, и выбор зависит от того, есть ли доступ к серверу, нужен ли разовый редирект или их будет много, а также насколько критично не допустить цепочек и циклов.
Если сделать редирект неправильно, можно получить лишний переход через несколько адресов, бесконечный цикл или просто потерять часть ссылочного веса из-за технических ошибок. Поэтому сначала стоит выбрать подходящий способ, а уже потом настраивать сам редирект.
Когда 301 редирект в WordPress действительно нужен
301 — это постоянное перенаправление. Его используют, когда старый адрес больше не должен быть основным. Типичные случаи:
- страница получила новый URL после изменения структуры ссылок;
- статья объединена с другой и старый материал удалён;
- товар, запись или рубрика переехали в другое место;
- нужно убрать дублирующий адрес и оставить один канонический вариант;
- сайт переехал на новый домен или на HTTPS.
Если редирект нужен только временно, например на время технических работ, 301 обычно не лучший выбор. Для временных задач используют 302 или 307, но это уже другая история. Для переноса постоянного адреса нужен именно 301.
Какой способ настройки выбрать
В WordPress редирект можно настроить через плагин, через серверный конфиг или через PHP-код в теме или мини-плагине. Для большинства владельцев сайтов самый безопасный путь — плагин, если нужно быстро настроить несколько адресов без правки серверных файлов. Если редиректов много и сайт работает на Apache или LiteSpeed, удобнее и надёжнее настроить их на уровне сервера. Код в WordPress имеет смысл, когда редирект должен зависеть от логики сайта, например от конкретной записи, категории или условия.
| Способ | Когда подходит | Плюсы | Ограничения |
|---|---|---|---|
| Плагин | Разовые и массовые редиректы без доступа к серверу | Просто настроить, не нужен код | Дополнительная нагрузка, зависит от плагина |
| .htaccess / nginx.conf | Есть доступ к серверу и нужен быстрый редирект на уровне веб-сервера | Работает до загрузки WordPress, меньше накладных расходов | Нужен доступ и аккуратность при правке |
| PHP-код | Нужна логика внутри WordPress | Гибко, можно завязать на условия | Легко ошибиться, если править тему напрямую |
Самый простой способ: плагин для редиректов
Если вы не хотите трогать серверные файлы, используйте плагин для управления редиректами. Это нормальный вариант для большинства сайтов на WordPress, особенно когда нужно перенести несколько старых URL на новые.
Схема обычно одинаковая: устанавливаете плагин, открываете раздел редиректов, указываете старый путь и новый адрес, выбираете код ответа 301 и сохраняете правило. После этого старый URL должен сразу отправлять пользователя и поискового робота на новый.
При настройке важно указывать именно путь, если плагин работает с относительными адресами. Например, для старой страницы /staryi-url/ и новой /novyi-url/ не нужно дублировать домен, если интерфейс плагина этого не требует. Если же плагин ожидает полный адрес, используйте полный URL, включая протокол.
После сохранения проверьте, что редирект ведёт сразу на конечный адрес, а не через промежуточные переходы. Если сначала старый URL ведёт на один адрес, а потом ещё раз перенаправляет на другой, это уже цепочка редиректов, и её лучше убрать.
Редирект через .htaccess на Apache и LiteSpeed
Если сайт работает на Apache или LiteSpeed и у вас есть доступ к файлу .htaccess, редирект можно сделать на уровне сервера. Это хороший вариант, когда нужно быстро перенаправить старый адрес без участия WordPress.
Перед правкой сделайте резервную копию файла. Ошибка в .htaccess может привести к недоступности сайта или к ошибке 500.
Для одного адреса обычно достаточно такого правила:
Redirect 301 /staryi-url/ https://example.com/novyi-url/Если нужно перенаправить целый раздел, иногда удобнее использовать правило на основе mod_rewrite. Но здесь важно не переборщить: чем сложнее логика, тем выше шанс получить цепочку или случайно задеть лишние страницы. Для массовых переносов лучше сначала составить список старых и новых адресов и проверить каждое правило отдельно.
После добавления правила сохраните файл и проверьте ответ сервера. Если сайт работает через кэш или CDN, иногда старый результат держится до очистки кэша, и это легко принять за ошибку редиректа.
Редирект через PHP в WordPress
Этот способ полезен, когда редирект должен зависеть от логики WordPress, например если вы хотите перенаправлять конкретную запись, старый slug или страницу по условию. Но править functions.php активной темы ради одного редиректа не лучший вариант: при смене темы правило пропадёт. Надёжнее использовать мини-плагин или mu-plugin.
Пример простого редиректа по старому пути:
add_action('template_redirect', function () {
if (is_page('staryi-url')) {
wp_redirect('https://example.com/novyi-url/', 301);
exit;
}
});Здесь template_redirect срабатывает до вывода шаблона, а wp_redirect() отправляет заголовок перенаправления. После вызова обязательно нужен exit;, иначе WordPress продолжит обработку страницы. Если забыть exit, можно получить непредсказуемое поведение или лишний вывод.
Такой код стоит использовать только для точечных случаев. Если у вас десятки или сотни редиректов, удобнее и безопаснее вести их в плагине или на сервере.
Как не создать цепочку, цикл и потерю веса
Самая частая ошибка — сначала редиректить старый URL на промежуточный адрес, а потом ещё раз на конечный. Для пользователя это выглядит как небольшая задержка, а для сайта — как лишний технический шаг. Поисковым системам тоже проще, когда старый адрес сразу ведёт на финальный.
Цикл возникает, когда страница A ведёт на B, а B по ошибке возвращает на A. Это обычно случается после правки правил в плагине или в .htaccess, особенно если совпадают условия для старого и нового URL. Проверяйте не только сам факт редиректа, но и конечный адрес.
Чтобы избежать проблем:
- делайте редирект сразу на конечный URL;
- не настраивайте одновременно несколько правил для одного и того же старого адреса в разных местах;
- проверяйте, не осталось ли старое правило в плагине после переноса в
.htaccess; - не редиректите новую страницу обратно на старую по ошибке в slug или шаблоне;
- после переноса обновите внутренние ссылки, чтобы не гонять пользователя через редирект без необходимости.
Если редиректов много, полезно отдельно проверить, нет ли цепочек вида 301 → 301 → 200. В идеале старый адрес должен сразу отдавать 301 и вести на конечную страницу с ответом 200.
Как проверить, что 301 работает правильно
Проверять редирект лучше не только в браузере, но и по HTTP-ответу. Браузер может скрыть детали, а вам нужно увидеть именно код ответа и конечный URL.
Самый простой способ — открыть старый адрес и посмотреть, куда он ведёт. Но для точной проверки лучше использовать любой инструмент, который показывает заголовки ответа: онлайн-проверку редиректов, расширение для браузера или команду curl, если вам удобно работать в терминале.
Пример проверки через curl:
curl -I https://example.com/staryi-url/В ответе должен быть статус 301 Moved Permanently и заголовок Location с новым адресом. Если видите 302, значит настроено временное перенаправление. Если видите несколько последовательных ответов, значит есть цепочка.
После проверки не забудьте открыть новый адрес и убедиться, что он отдаёт 200 OK, а не ещё один редирект. Это особенно важно после смены структуры постоянных ссылок или переноса разделов.
Что делать после переноса страниц
Редирект сам по себе решает только часть задачи. Если страница переехала, старые ссылки в меню, контенте и внутренних блоках лучше заменить на новый адрес. Тогда пользователи и поисковые роботы будут попадать на нужную страницу напрямую, без лишнего перехода.
Если старый материал удалён навсегда и у него есть близкая замена, редирект на наиболее релевантную страницу обычно лучше, чем отправлять всё на главную. Перенаправление на главную допустимо только когда действительно нет подходящего аналога. Иначе это выглядит как плохая замена и часто не помогает пользователю.
Когда редиректов становится много, имеет смысл вести их списком: старый URL, новый URL, причина переноса. Это упрощает поддержку сайта и помогает быстро найти ошибку, если один из адресов начнёт вести не туда.
Если нужен удобный способ управлять редиректами и не разбрасывать правила по нескольким местам, можно рассмотреть плагины для технической чистки и SEO-обслуживания сайта, например Clearfy Pro: https://wpshop.ru/plugins/clearfy?utm_source=wpkama.ru&utm_medium=article&utm_campaign=kak-nastroit-301-redirekt-v-wordpress. Но сам принцип остаётся тем же: один старый адрес должен вести на один конечный, без лишних переходов и конфликтующих правил.
Если коротко, для разового переноса достаточно плагина или одного правила на сервере. Для массовой миграции лучше заранее составить карту старых и новых URL, проверить каждое правило и убедиться, что редирект идёт сразу на конечную страницу. Тогда вы сохраните трафик, не создадите цепочки и не потеряете контроль над структурой сайта.