CSS加载失败,会导致网页错位。如果浏览器提示不安全,说明当前网页内含有非https的资源。如某个图片是http的。
网上很多方法,有的有效,但并不完整。有的没有效。有的比较麻烦。
比如nginx配置文件中将http请求强制301跳转到https。
这样一跳转,所有的CSS样式均会在https模式下了。
由于WDCP挺神奇的,动来动去,很容易就崩了。
所以就不直接在服务器上操作了。
直接修改网站文件,不会影响整个服务器和其它站点。
下面方法一步步修改,最后完美实现全站HTTPS,没有任何错误。
1、后台-全局-站点URL。改为HTTPS。
2、后台-站长-ucenter设置。改为HTTPS。
3、后台-ucenter-应用通信。改为HTTPS。
更新缓存。
4、修改模板文件:header.htm,搜索http全部替换为https。
更新缓存。
5、修改/source/function/function_core.php
搜索:
$content = output_replace($content);
底下加入:
$content = str_replace('http://www.xxx.com','https://www.xxx.com',$content);
更新缓存。
6、修改/source/class/discuz/discuz_application.php
搜索:
$_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : flase;
改为:
$_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'on') ? true : true;
7、改到这。打开论坛首页,发现https下网页不再有错乱,都正常了。但是浏览器上方依然显示“不安全”。
说明还有URL是HTTP。
按F12可以看到哪些URL有问题。
其中有一个JS连接是
http://discuz.gtimg.cn/cloud/scripts/discuz_tips.js?v=1
搜索footer.htm
最底下可以看到是<!–{eval output();}–>
调用的。(不要直接修改footer.htm会影响伪静态输出。)
找到:source/plugin/manyou/Service/DiscuzTips.php
删除以下代码:
$jsCode = <<<EOF <div id="discuz_tips" style="display:none;"></div> <script type="text/javascript"> var tipsinfo = '$sId|$version|$cloudApi|$isfounder|$adminId|$openId|$uid|$groupId|$ts|$sig|$clientVersion'; </script> <script src="http://discuz.gtimg.cn/cloud/scripts/discuz_tips.js?v=1" type="text/javascript" charset="UTF-8"></script> EOF; echo $jsCode;
去掉后对论坛有一定影响,比如:收不到 Discuz! 的安全通知了,也收不到 Discuz! 的补丁通知了,还收不到防水墙的过滤通知了。我觉得这个基本可以忽视。
8、最后一步。审查元素可以发现,很多css里要加载的图片都是相对路径,所以网页加载时它不会自己加https,而是默认的http,所以主要是CSS和JS里要改成绝对路径。
修改header_common.htm
或header_common.php
。如果当前模板目录没有,则是调用的默认文件,就到默认模板目录里面修改)里面有一行代码
搜索:
<base href="{$_G['siteurl']}" />
改为:
<base href="https://www.xxx.com" />
更新缓存。
这时已经HTTPS已经完全绿标了。完成。