现在SSL站点是大势所趋, Google更青睐https网站. 另外基于网址唯一性, 减少网站重复内容等需求, 最好将网站做下301跳转, http跳转到https, 以及不带www和带www之间的跳转.
以下是具体步骤. 基于LNMP、Nginx环境。
1. 编辑网站配置文件 (域名按你自己的改)修改前记得备份, 万一出错的话可以还原.
vim /usr/local/nginx/conf/vhost/www.xxx.com.conf
1.1 首先将所有http请求(80端口) 跳转到https(443端口)
只要是http开头的, 不管带还是不带www, 通通跳转到https://www.xxx.com
添加以下代码 (域名改成自己的)
return 301 https://www.xxx.com$request_uri;
具体看截图:
1.2 然后是https请求 (443端口)中, 不带www跳转到带www的域名补充: 关于不带www跳转到www, 不考虑https的情况:
网上很多文章的代码是这样:
将两个域名写在同一个server中,
然后通过if语句判断域名进行rewrite跳转:
Nginx官方并不推荐使用if语句 (原文可查看此处).
因为每次访问都要判断一遍, 低效且复杂。
其推荐的做法是将带www和不带www分开写成2个server, 再根据需要进行跳转.
另外使用return语句正则匹配性能更优秀.
比如https://xxx.com 跳转到 https://www.xxx.com
这里建议写成两个server:
一个是www的, 不用做跳转, 只要删掉server_name中不带www的域名就好了.
另一个是不带www的, 需要跳转到带www.
1.2.1 https & 带www 配置
找到443端口的代码段, 删掉wmsoho.com, 注意分号别删了.
1.2.2 https & 不带www 配置在文件末尾新建一个server (你可以直接复制上面443端口的server代码再修改), 注意不要出错. 完整代码如下: