为什么不使用 if ($host ~* nginx.cn) 的方法,因为这样会匹配 domain.com
和 www.domain.com
两个,这样写的结果会使每次请求都需要检查 if,严重降低 Nginx 的效率。
最好的办法是增加两个 server 配置1
2
3
4
5
6
7
8server {
server_name domain.com;
return 301 $scheme://www.domain.com$request_uri;
}
server {
server_name www.domain.com;
[...]
}
Nginx将带www域名跳转到不带www域名的nginx rewrite规则写法1
2
3
4
5
6
7
8server {
server_name www.domain.com;
return 301 $scheme://domain.com$request_uri;
}
server {
server_name domain.com;
[...]
}