301跳转是永久性的跳转,这个定义一直是知道的,但是今天却让它把自己搞懵了一把。
问题复现:
最近在升级https,在升级过程中发现一个bug,就是当url不闭合的时候会301跳转到一个闭合的url上面,但是从https跳转后的url就变成http的了,例如:
https://www.AAA.com/test 会301到 http://www.AAA.com/test/
第一反应是nginx配置文件中做了这么一个跳转,然后去扒nginx的配置文件,把所有的rewrite看了一遍,注释掉所有疑是地方,还是会有这个跳转···没有办法,
一怒之下把所有的http模块都注释掉了,结果我都开始怀疑人生了,还是会有一个跳转,真是····
后来开始跟大家讨论,一直在说301跳转,301跳转,永久性跳转,他是永久性跳转啊,浏览器很有可能会记录到缓存里面的啊···于是,清楚浏览器缓存,重新去掉
rewrite部分,这次不跳转了,成功~
最后把跳转部分替换成了http和https双支持的,搞定~
下面附一下修改的配置:
rewrite ^/([a-zA-Z0-9_-/]+[^/])$ http://$host/$1/ permanent;
替换成:
rewrite ^/([a-zA-Z0-9_-/]+[^/])$ $scheme://$host/$1/ permanent;