2017-01-31 82 views
0

我的配置:Nginx多個server_names重定向非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

當然你可以使用$ scheme指令 – witalis