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