整个互联网环境越来越重视信息安全,越来越多的站长已经部署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才能正常访问。