Как сделать постоянное перенаправление с кодом 301 на веб-сервере Nginx?

Задача: Изменился 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

Автор

Evgeni

Веб-разработчик, фрилансер и фанат WordPress с 2012 года. На этом сайте делюсь заметками для начинающих по разработке на WordPress. Надеюсь увидеть вас в числе своих подписчиков.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *