对于大部分站长来说,域名跳转仍然是模模糊糊的概念,经常出现不知不觉就正常了,又莫名其妙异常的情况。狗哥曾经也被各种跳转支配过,为此专门写下这篇文章给自己留作记录,也给新手站长一些提示。
本文想要实现的是在全站CDN隐藏IP的情况下,将http://xxx.com、https://xxx.com、http://www.xxx.com全部跳转到https://www.xxx.com。使用宝塔面板+nginx作为网站运行环境,网站程序使用wordpress,并使用腾讯云CDN进行IP隐藏。
之所以要说这些,是因为他们都具有重定向的能力,很多人都会被这些重定向搞懵,然后浏览器提示此网页重定向次数过多。
第一步,修改本地电脑host文件
使其将域名始终指向你的源站服务器IP,这样调试过程中不受CDN的影响。
打开C:\Windows\System32\drivers\etc\host
文件,在最后增加一行,参考如下写法:
127.0.0.1 localhost 源站IP 你的域名
注意中间的空格
第二步,使用宝塔面板配置nginx的跳转
首先添加xxx.com与www.xxx.com两个站点,下图是本站的配置
此时你的网站通过xxx.com与www.xxx.com都能访问。
然后ssl就自行添加即可,但是注意:如果你要使用cdn跳转https,不要开启强制https访问!!!否则可以开启。开启后http://www.xxx.com就会跳转到https,http://xxx.com也会。我没有开启,尚不清楚是否存在冲突。
此时你的网站通过http://xxx.com、https://xxx.com与http://www.xxx.com、https://www.xxx.com都能访问。但不会跳转,对seo不友好。
重点,想要实现将http://xxx.com、https://xxx.com、http://www.xxx.com全部跳转到https://www.xxx.com。只需要开启宝塔nginx的重定向即可。
这个规则意思是只要你请求的域名里带有xxx.com,那就全部301到https://www.xxx.com。仔细想想,将http://xxx.com、https://xxx.com全部跳转到https://www.xxx.com。
没用宝塔的可以直接编辑你的nginx配置文件,将下面这段假如其中就行了,注意修改域名。
if ($host ~ '^xxx.com'){ return 301 https://www.xxx.com$request_uri; }
如果你没使用CDN,教程到此就结束了,所有的都跳转到了https://www.xxx.com上了。
使用cdn就不要开启宝塔的强制https访问,跳转交给CDN那边即可。理论上CDN那边跳转与本地的nginx跳转不冲突才对,但在测试过程中出现了重定向过多,有可能是我电脑有缓存,就不测试了,有兴趣的站长可是测试下。
总结一下
添加nginx301规则,解决顶级域名跳转https://www的问题,cdn或者nginx配置https强行跳转功能。其实nginx的https强行访问也是301规则,规则如下,没用宝塔面板的可以自行添加。
if ($server_port !~ 443){ rewrite ^(/.*)$ https://$host$1 permanent; }
重定向规则需添加到server里面。
评论 (0)