不用写正则,一段代码即可实现HTTP到HTTPS的跳转

整个互联网环境越来越重视信息安全,越来越多的站长已经部署SSL证书或正在部署。

部署HTTPS后,访客仍然会访问HTTP的网页,但如果直接将HTTP 全局301 到HTTPS往往会出现一些兼容性的问题,比如有些程序的插件不支持HTTPS,或部分网站接口必须依赖HTTP。最主要还有很多站长不懂301跳转的正则代码,那么可使用以下代码,轻松实现跳转。

<script type="text/javascript">
var url = window.location.href;
              if (url.indexOf("https") < 0) {
                  url = url.replace("http:", "https:");
                  window.location.replace(url);
              }
</script>

更新:
该方法用于DiscuzX 程序时会造成页面错乱的问题
造成该问题的原因是由于访客访问HTTP页面时程序获取的仍然是HTTP地址,并将该地址写入缓存文件中。如以下代码

<base href="http://www.Example.com/" />

该代码的作用是给页面上所有相对 URL 规定基准 URL,通过本文方法跳转到HTTPS后并不会重新生成缓存,仍然访问了HTTP的基准URL,从而造成页面错乱的问题。

因此DiscuzX 程序必须通过301跳转到HTTPS才能正常访问。

发表回复