Задача: Изменился URL у страницы и требуется сделать постоянное перенаправление на новую страницу.
Чтобы не мудрить, предлагаю для этой цели использовать простую директиву return
.
Обратимся к документации и взглянем на информацию об этой директиве, которую мы будем использовать для постоянного перенаправления.
Syntax: return code [text]; return code URL; return URL; Context: server, location, if
https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#return
Нам подойдёт для решения поставленной задачи контекст location и синтаксис return code URL;
Открываем конфигурационный файл HTTP-сервера Nginx и добавляем в него
#
# Redirect
#
location /old-page/ {
return 301 /new-page/;
}
/old-page/ будет перенаправлять и без последнего слеша. Если требуется задать строгое сравнение, то с помощью модификатора “=
” можно задать точное совпадение URI
#
# Redirect с точным соответствием символов в URI
#
location = /old-page {
return 301 /new-page-2/;
}
Если требуется перенаправление на другой домен, то можно сделать перенаправление таким образом:
#
# Redirect
#
location /old-page/ {
return 301 $scheme://new-site.ru/about;
}
А вот простой пример постоянного перенаправления (со статусом 301) всех посетителей на новое доменное имя, но только уже в контексте server
server {
listen 80;
listen 443 ssl;
server_name old-site.ru;
return 301 $scheme://new-site.ru$request_uri;
}
Важно понимать, что в указании $request_uri есть смысл только тогда, когда у вас на сайте в адресах после домена происходит полное соответствие, то есть old-site.ru/contact == new-site.ru/contact