Справочник

Редирект 301 Moved Permanently: что значит и как настроить

301 Moved Permanently — страница навсегда переехала на новый адрес, и все ссылки стоит обновить. Это главный инструмент переезда: смены домена, перехода на HTTPS, новой структуры адресов. В поиске старый адрес со временем заменяется новым, а посетители по старым ссылкам попадают куда нужно.

Обновлено 07.10.2026≈ 5 мин чтения
Содержание 11

Что означает код 301

По стандарту HTTP код 301 значит, что у ресурса новый постоянный адрес и дальше обращаться нужно по нему. Новый адрес сервер указывает в заголовке Location, и браузер переходит туда автоматически.

Ответ 301 браузеры могут сохранить в кэше, если сервер не указал иное. Тогда при следующем открытии старого адреса браузер сразу перейдёт на новый, не спрашивая сервер, — поэтому ошибочный 301 может срабатывать у посетителей и после того, как вы его убрали.

При перенаправлении 301 браузер может сменить метод POST на GET, и данные формы до нового адреса не дойдут. Так сложилось исторически: в HTTP/1.0 коды 301 и 302 задумывались как сохраняющие метод, но браузеры со временем стали менять POST на GET, и стандарт это разрешил. Для перенаправлений без смены метода позже добавили коды 307 и 308.

Когда нужен 301

  • переезд сайта на новый домен;
  • переход с HTTP на HTTPS;
  • выбор основного адреса — с www или без;
  • новый адрес страницы — например, после переименования раздела;
  • объединение нескольких страниц в одну.

Если страница переехала на время, нужен не 301, а 302.

Как настроить 301 в nginx

Перевести весь сайт с HTTP на HTTPS и заодно на адрес без www:

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://example.com$request_uri;
}

Переменная $request_uri — исходный адрес запроса вместе с параметрами, поэтому каждая страница перенаправляется на свою копию по новому адресу, а не на главную. Запросы по HTTPS к www.example.com перенаправьте так же — отдельным блоком server с listen 443 ssl и сертификатом, в который входит имя www.example.com.

Перенаправить одну страницу — адрес можно указать без домена, nginx дополнит его сам:

location = /old-page/ {
    return 301 /new-page/;
}

Перенаправить целый раздел, сохранив остальную часть адреса, — строка ставится в блок server:

rewrite ^/blog/(.*)$ /stati/$1 permanent;

Флаг permanent даёт код 301, флаг redirect — код 302. Если флаг не указан, а новый адрес начинается с http:// или https://, nginx ответит 302.

После любых правок: sudo nginx -t, затем sudo systemctl reload nginx.

Как настроить 301 в Apache

В файле .htaccess или в настройках сайта:

Redirect permanent /old-page/ https://example.com/new-page/

Redirect сравнивает начало адреса, поэтому запрос /old-page/foto/ уйдёт на https://example.com/new-page/foto/. Старый путь пишется от корня сайта, начинается с косой черты и учитывает регистр букв.

Как настроить 301 в PHP

header('Location: https://example.com/new-page/', true, 301);
exit;

Без третьего параметра PHP отправит код 302. exit нужен, чтобы после перенаправления скрипт не продолжал работу.

Как настроить 301 в WordPress

В коде темы или плагина перенаправление делают функцией wp_redirect():

wp_redirect( 'https://example.com/new-page/', 301 );
exit;

По умолчанию wp_redirect() отправляет код 302 и не останавливает скрипт, поэтому код 301 и exit нужно указать явно. Для перенаправлений без программирования есть плагины.

Как проверить

curl -IL http://example.com/old-page/

curl покажет каждый шаг: код и заголовок Location каждого перенаправления, а в конце — код конечной страницы. Лучше, когда до конечной страницы один шаг: каждое лишнее перенаправление — это ещё один запрос. Если адреса перенаправляют друг на друга по кругу, Chrome остановится и покажет ошибку ERR_TOO_MANY_REDIRECTS.

Проверяйте новые перенаправления через curl или в окне инкогнито: обычное окно браузера могло запомнить прежний ответ 301. Пока перенаправление отлаживается, можно ставить временный 302 — без особых заголовков браузер его не кэширует, — а когда всё работает, сменить на 301.

301 и поиск Яндекса

  • Адрес, с которого стоит 301, Яндекс не индексирует, а адрес назначения индексирует, если тот доступен роботу.
  • Перенаправление Яндекс советует сохранять не меньше полугода.
  • Старый адрес пропадает из поиска постепенно. Ускорить это можно, отправив страницы на переобход в Яндекс Вебмастере.
  • При смене домена переезд в поиске может занять больше месяца.

Чем 301 отличается от соседних кодов

КодНасколькоМетод запроса
301НавсегдаPOST может смениться на GET
302На времяPOST может смениться на GET
307На времяНе меняется
308НавсегдаНе меняется

Источники

Сверено 6 октября 2026 года.

Что почитать дальше

Проверено и обновлено: 07.10.2026