nginx. Редирект с www на без www и наоборот
При использовании в качестве сервера Apache
, как правило (при условии включенного mod_rewrite
и разрешения на переопределение настроек через .htaccess
), достаточно отредактировать файл .htaccess
. В разрезе nginx
, придется редактировать настройки сервера. Но все не так сложно. Вся перенастройка заключается в следующих изменениях:
- Добавляем новую запись
server
в настройках; - Прописываем порт в
listen
по которому мы слушаем запросы (обычно 80); - Указываем
server_name
равным домену с которого необходимо осуществить редирект; - Задаем
return
с кодом 301 и адресом на который осуществляется перенаправление; - Удаляем запись о (под)домене c которого перенаправляем из соновного блока
server
; - Перезагружаем настройки
nginx
с помощью/etc/init.d/nginx reload
.
Приведем пример перенаправления с домена example.com
на www.example.com
. Таким образом файл с настройками доменов для сайта будет выглядеть примерно следующим образом:
server { listen 80; server_name example.com; return 301 http://www.example.com$request_uri; } server { listen 80; server_name www.example.com; # остальные настройки сервера }
Аналогичным образом осуществляется редирект в www на без www:
server { listen 80; server_name www.example.com; return 301 http://example.com$request_uri; } server { listen 80; server_name example.com; # остальные настройки сервера }