Советы PHP-разработчика

Блог содержащий короткие заметки касающиеся программирования для web.

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;
    # остальные настройки сервера
}
  • 2015-11-01 06:57:57