需求:test.com会被重定向到www.test.com,同理test.com/post/1也会被重定向到www.test.com/post/1
last – 基本上都用这个Flag
break – 中止Rewrite,不再继续匹配
redirect – 返回临时重定向的HTTP状态302
permanent – 返回永久重定向的HTTP状态301
实现一
修改nginx.conf文件,内容如下:
#只作test.com转向www.test.com server { listen 80; server_name test.com; access_log off; rewrite ^ http://www.test.com$request_uri permanent; } #www.test.com主要配置 server { listen 80: server_name www.test.com; #配置内容... }
算是比较好的方案。
优点
只有访问test.com时才会重定向到www.test.com。
访问www.test.com不受server test.com rewrite的影响。
缺点
要用到两个server { }
实现二
修改nginx.conf文件,内容如下:
server{ listen 80; server_name test.com www.test.com if ($host != 'www.test.com) { rewrite ^/(.*)$ http://www.test.com/$1 permanent; } }
优点
一个server{}解决了
缺点
不管访问test.com还是www.test.com,每个客户端nginx都要作一次if()的判断,访问域名是不是www.test.com,比较浪费资源。