Редирект 301 нужен, когда страница переехала на новый адрес, URL изменился после редизайна или старую ссылку нужно аккуратно заменить на актуальную. Если настроить его неправильно, можно получить цепочки перенаправлений, петли или просто неработающие страницы. Если настроить правильно, поисковые системы и браузеры поймут, что адрес изменился навсегда, а посетители попадут на нужную страницу без лишних ошибок.
В WordPress редирект 301 можно сделать несколькими способами: через плагин, через правила сервера или прямо в коде темы/плагина. Для большинства сайтов самый практичный вариант — плагин, если нужен быстрый и безопасный способ без правок конфигурации сервера. Если у вас большой проект или много редиректов, иногда удобнее вынести их на уровень веб-сервера.
Когда именно нужен редирект 301
Постоянное перенаправление используют в типичных рабочих ситуациях:
- страница получила новый адрес после смены структуры сайта;
- статья или товар были объединены с другой страницей;
- старый URL больше не нужен, но на него есть внешние ссылки и поисковый трафик;
- сайт переехал на HTTPS или на новый домен;
- нужно убрать дубли, например со слэшем и без слэша, или с www и без www, если это не настроено на уровне сервера.
Если страница удалена без замены, иногда лучше отдать 410 Gone, а не 301. Но если у старого адреса есть ценность для пользователей или поискового трафика, обычно выбирают именно 301 и ведут на наиболее близкую по смыслу страницу.
Самый простой способ: плагин для редиректов
Для сайта на WordPress это самый понятный путь, если вы не хотите трогать .htaccess, конфигурацию Nginx или PHP-код. Плагин удобен тем, что позволяет быстро создать правило, проверить его и при необходимости удалить без риска сломать сайт целиком.
Логика настройки почти везде одинаковая: вы указываете старый адрес, новый адрес и тип перенаправления 301. После этого сохраняете правило и проверяете, что браузер открывает нужную страницу.
Если нужен именно инструмент для редиректов, подойдёт плагин Redirection. Он не обязателен для WordPress, но для этой задачи обычно удобнее ручных правок, особенно если редиректов несколько.
Как настроить редирект через плагин
После установки и активации плагина откройте его раздел в админке и создайте новое правило. Обычно нужно заполнить три поля:
- Source URL — старый адрес;
- Target URL — новый адрес;
- HTTP code —
301.
Если плагин просит путь без домена, указывайте только часть после домена, например /staryy-url/. Если он принимает полный адрес, используйте полный URL, но не смешивайте форматы в одном наборе правил.
После сохранения откройте старую ссылку в браузере и убедитесь, что вас перекидывает на новый адрес. Лучше проверить ещё и в режиме инкогнито, чтобы не мешал кэш браузера.
Редирект 301 через .htaccess на Apache
Если сайт работает на Apache, редирект можно задать в файле .htaccess. Это хороший вариант, когда нужен быстрый и лёгкий по нагрузке способ, а доступ к конфигурации сервера у вас есть. Но здесь важно не ошибиться: одна неверная строка может привести к ошибке 500 и сделать сайт недоступным.
Перед изменением файла сделайте резервную копию. Если что-то пойдёт не так, вы сможете вернуть исходное состояние за минуту.
Для одного адреса достаточно такой строки:
Redirect 301 /staryy-url/ https://example.com/novyy-url/Если нужен более гибкий вариант, используют модуль mod_rewrite:
RewriteEngine On
RewriteRule ^staryy-url/?$ https://example.com/novyy-url/ [R=301,L]Во втором примере правило сработает для адреса /staryy-url и /staryy-url/. Это полезно, если старый URL мог открываться в двух вариантах.
После правки сохраните файл и проверьте страницу через браузер или командой curl -I https://example.com/staryy-url/. В ответе должен быть статус 301 и заголовок Location с новым адресом.
Редирект 301 на Nginx
Если сайт работает на Nginx, правило обычно добавляют в конфигурацию виртуального хоста. В WordPress это не делается из админки, поэтому нужен доступ к настройкам сервера или помощь хостинга.
Для одного адреса можно использовать такую директиву:
location = /staryy-url/ {
return 301 https://example.com/novyy-url/;
}Если у вас много похожих адресов, можно использовать регулярное выражение, но здесь особенно легко ошибиться. Для массовых правил лучше сначала протестировать одно-две записи и только потом переносить логику на весь набор URL.
После изменения конфигурации Nginx обычно требуется перезагрузка или перечитывание настроек. Конкретная команда зависит от сервера и прав доступа, поэтому на обычном хостинге это часто делает поддержка.
Когда редирект лучше делать в коде WordPress
Иногда редирект нужен не на уровне сервера, а внутри самого WordPress: например, если правило должно зависеть от логики сайта, роли пользователя или условий, которые удобнее описать в PHP. Для простого переноса страниц это не лучший путь, но он полезен, когда вы не можете менять конфигурацию веб-сервера.
Минимальный рабочий пример можно добавить в файл functions.php дочерней темы или в собственный плагин:
add_action('template_redirect', function () {
if (is_page('staryy-url')) {
wp_redirect(home_url('/novyy-url/'), 301);
exit;
}
});Здесь is_page('staryy-url') проверяет страницу по ярлыку, а wp_redirect() отправляет посетителя на новый адрес. После вызова обязательно используется exit, иначе WordPress может продолжить вывод страницы.
Этот способ подходит только если вы понимаете, где именно размещаете код. Не вставляйте его в файл активной темы без резервной копии: при ошибке синтаксиса сайт может перестать открываться.
Как не сломать сайт при настройке редиректа
Самые частые проблемы появляются не из-за самого 301, а из-за неправильной логики перенаправления. Вот что стоит проверить до публикации правила:
- старый URL не должен вести сам на себя;
- новый URL должен открываться напрямую без редиректа обратно;
- не должно быть цепочки из нескольких переходов подряд;
- если меняете домен, проверьте и http/https, и www/без www;
- не делайте массовый редирект всех страниц на главную, если у старых адресов есть близкие по смыслу новые страницы.
Цепочка редиректов выглядит так: старый адрес ведёт на промежуточный, а тот — на конечный. Для пользователя это лишняя задержка, а для поисковых систем — лишний шум. Лучше сразу направлять на финальный URL.
Ещё одна типичная ошибка — использовать 302 вместо 301. Временный редирект не подходит для постоянного переноса страницы, потому что он сообщает поисковым системам другой смысл.
Как проверить, что редирект 301 работает правильно
Проверка нужна не только после настройки, но и после обновлений темы, плагинов или конфигурации сервера. Иногда правило перестаёт работать из-за кэша, конфликта с другим плагином или более общего правила на сервере.
Самый простой способ — открыть старый URL в браузере и посмотреть, куда он ведёт. Но этого недостаточно, если вы хотите убедиться именно в коде ответа. Надёжнее проверить заголовки:
curl -I https://example.com/staryy-url/В ответе ищите:
HTTP/1.1 301 Moved Permanentlyили аналогичный статус;Location: https://example.com/novyy-url/.
Если вместо 301 вы видите 200, значит редирект не сработал. Если видите 302, правило настроено как временное перенаправление. Если получаете ошибку 404, значит старый адрес не перехвачен правилом вообще.
Что выбрать в реальной задаче
Если вам нужно перенести одну страницу или несколько старых ссылок, проще и безопаснее использовать плагин. Если редиректов много и они должны работать максимально быстро, удобнее вынести их в .htaccess на Apache или в конфигурацию Nginx. Если серверные настройки недоступны, остаётся вариант с template_redirect в WordPress, но его лучше использовать точечно.
| Способ | Когда подходит | Что учитывать |
|---|---|---|
| Плагин | Быстрые правки, перенос страниц, работа без доступа к серверу | Зависимость от плагина и его настроек |
| .htaccess | Сайт на Apache, нужен лёгкий и быстрый редирект | Ошибки в файле могут уронить сайт |
| Nginx | Сайт на Nginx, редиректов много или они должны работать на уровне сервера | Нужен доступ к конфигурации |
| PHP-код WordPress | Нельзя менять серверные правила, нужна логика внутри сайта | Нужно аккуратно размещать код и тестировать |
Если задача сводится к обычному переносу страницы, не усложняйте схему. Один корректный 301 на нужный адрес решает проблему лучше, чем набор промежуточных правил и ручных костылей. Главное — проверить результат и не оставлять старые ссылки без перенаправления, если на них ещё есть трафик или внешние упоминания.