2017-01-31 8 views
0

Мой конфиг:Nginx лучший способ для нескольких серверных имен переадресовывать без www. в WWW

server { 
listen 80; 
listen [::]:80; 
server_name domain.com www.domain.com; 

##locations and fastcgi proxy stuff etc down here 
} 

Как я вижу все остальные делают 301 редирект (возврат), они создают новый блок сервера и поместить хозяина домена там как этот

server { 
listen 80; 
listen [::]:80; 
server_name domain.com; 
return 301 $scheme://www.domain.com$request_uri; 
##This server block contains no locations etc 
} 

Как я могу сделать переадресацию с не-www. на www. без создания нового серверного блока?

ответ

2

попробуйте:

if ($host ~* "^(?!www)(.*)$") { 
    set $catch_host $1; 
    rewrite (.*) http://www.${catch_host}$1 permanent; 
} 
+0

Для получения дополнительной совместимости может HTTP: // область сказать $ схеме: //? – C0nw0nk

+1

, конечно, вы можете использовать директиву $ schem – witalis