背景
在我安装使用https协议之后,打开后台才出现的此类情况,想到了几种可能的原因及解决方法,分享出来帮助遇到同样问题的你。
什么是重定向
重定向是一种特殊的页面,使得人们在输入该名称进入条目或者点击指向该名称的内部链接时,系统能够自动导航到重定向页面内部指定的另一相关页面中,从而实现相关页面可以以多个名称进行访问。
总结:重定向相当于路标,将所有不同地方的人指向同一个地方,这样就可以人为创建出一个相关的集合,重定向的内容都是这些相关内容的子集。
如何进行重定向
如果要将文章1定位到文章2,那么需要在文章1中输入命令行进行重定位:
#REDIRECT [[文章1的名称]]
取消方法:
在重定向的文章url后面添加?redirect=no
注意事项
不要多次进行重定向,这会导致服务器资源大量消耗,并且会是页面加载速度变慢,影响体验。
一:强制转换
原因
提示“重定向次数过多”,一般是因为将HTTP链接强制跳转为HTTPS链接,然鹅,在防火墙上却只配置了一条HTTPS(对外协议)到HTTP(源站协议)的转发,防火墙强行将用户的请求进行跳转到更安全的https,所以造成死循环。
总结:防火墙心比天高,明明是一条环形路,非得让天上走的、地上爬的都走这里,最后谁都出不去,形成死循环。
解决方法
将环形道路变成非封闭道路:
通过在防火墙中修改服务器信息,配置两条HTTP(对外协议)到HTTP(源站协议)和HTTPS(对外协议)到HTTPS(源站协议)的服务器信息,就能解决此类问题。
二:循环解析
原因
CNAME记录用于域名的别名,如果网站的初始链接都有www,然而含有www的域名都要跳转到不含www的域名或是IP,如果将CNAME的解析指向域名,会使不含www的域名重新跳转到含有www的域名,最终造成了死循环。
就好像一个人有个外号叫:A,正常来说,说到A这个外号想到的应该是这个人是谁,然而防火墙偏偏不这么想,非得把外号A对应成名字B,然而在叫名字B的时候联想到的却是外号A,结果就不知道这个人是谁了。
解决方法
将CNAME的解析指向IP而非域名.
三:Cloudflare
原因
开启SSL证书后选择灵活SSL,由于灵活的SSL强制通过未加密的HTTP连接到源Web服务器,然而web服务器只能以https的方式进行访问,结果http就被拒之门外了。
解决方法
方法一:对于采用cloudflare提供的CDN加速来说,将灵活ssl切换到完全的SSL。
方法二:从个人站点服务器配置:将HTTP移动到HTTPS重定向,修改方法参考nginx的官方文档:http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#rewrite
补充
灵活 SSL 选项允许在访问者和 Cloudflare 之间建立安全的 HTTPS 连接,但会强制 Cloudflare 通过未加密的 HTTP 连接到源 Web 服务器。源 Web 服务器不需要拥有SSL 证书,但访问者仍然会浏览该网站的 HTTPS 版本。如果您的网站上有任何敏感信息,则不建议使用灵活选项。只有在用户无法在自己的源 Web 服务器上设置 SSL 时,才使用灵活作为最后的手段。
完全可确保访问者与 Cloudflare 域之间以及 Cloudflare 与 Web 服务器之间的安全连接。完全 SSL 选项不会在源中验证 SSL 证书的真实性。源 Web 服务器上允许使用自签名证书。要在启用完全 SSL 选项之前避免 525 错误,请将源 Web 服务器配置为允许端口 443 上的 HTTPS 连接,并提供自签名 SSL 证书