2017-01-31 30 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