在主站点启用https之后,子站点也一并启用了https,正当乐滋滋地庆幸自己以前有先见之明坚持用relative address时候,突然发现站点不能正常访问,打开任何页面都是”Error 310 (net::ERR_TOO_MANY_REDIRECTS): there were too many redirects”,后来经过排查,是Cloudflare SSL的问题,记录一下以供参考:
Cloudflare Flexssl导致https站点重定向循环
主要表现:
- 访问任何页面都是重定向循环,包括任何静态文件
- 去掉ssl访问之后正常,也就是80端口访问http://fumed-silica.net正常,而443端口访问https://fumed-silica.net一定出现循环重定向
一开始还是各种排查,这次花费的时间比上次更久,因为经过昨天的排查基本确定什么配置都是正常的正确的…… 这次又把排查步骤重新做了一遍 – 除了让朋友同事帮忙测试,因为直接用第三方站点确认了问题。具体过程就不赘述,直接发出罪魁祸首:
How do I fix the infinite redirect loop error after enabling Flexible SSL with WordPress?
没错,问题竟然是Cloudflare!各种服务器/本地电脑检查的我彻底崩了。
解决方法
直接把图里的Flexible修改为Full即可:
出现的原因是服务器使用了跳转代码,强制http跳转到https链接,而Cloudflare 启用Flexible SSL的时候在传输过程中并不能正确识别默认访问http,导致网页在http和https形成死循环。启用FULL SSL之后,Cloudflare默认强制访问https资源,问题解决!
怎么实现的wuce.org 自动跳转到 http://www.wuce.org?
Nginx配置即可实现:
server {
server_name .wuce.org;
listen 80;
rewrite ^(.*) https://www.wuce.org$1 permanent;
}