不用写正则,一段代码即可实现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才能正常访问。

IIS6支持.htaccess伪静态文件的设置方法

一度以为IIS6设置伪静态的方法只有添加Rewrite组件到Isapi筛选器,然后在httpd.ini设置伪静态规则。
用此方法设置的规则将应用到IIS上的所有站点,容易造成规则冲突。
有些网站程序只提供了.htaccess伪静态文件,也就用不了该方法。

在以下是IIS6支持.htaccess伪静态文件的设置方法。

首先下载ISAPI_Rewrite3 full完整版 静态化组件
下载链接:http://www.jb51.net/softs/66905.html#download

根据提示安装完后重启IIS即可生效。

ecshop出现Warning: Cannot modify header information解决方案

出现一下错误提示

Warning: Cannot modify header information – headers already sent by (output started at D:\amp\www\htdocs\data\config.php:1) in D:\amp\www\htdocs\includes\cls_session.php on line 116
Warning: Cannot modify header information – headers already sent by (output started at D:\amp\www\htdocs\data\config.php:1) in D:\amp\www\htdocs\includes\cls_template.php on line 58

打开php.ini,把output_buffering默认的Off设为4096就OK了。
修改完PHP.ini配置文件后,一定要重启WEB服务器才能生效。