- 最后登录
- 2019-3-11
- 威望
- 2
- 金钱
- 1007
- 贡献
- 1
- 注册时间
- 2013-3-12
- 阅读权限
- 150
- 分享
- 0
- 精华
- 13
- 积分
- 1369
- 帖子
- 305
   
TA的每日心情 | 无聊 2016-6-20 11:50 |
---|
签到天数: 2 天 [LV.1]SEO入门
|
【SEO学习论坛】dz论坛http转换https完整版教程
2018.6.17号,SEO学习论坛也着手做了https转换,转换后https://www.heimaoxuexi.net/,毕竟百度官方给出了明确指示,2018年下半年,将对https站点加大扶持力度,并给以优先展现的机会,直接影响自然搜索排名。于是作为技术的我,硬着头皮忙活了一天,毕竟dz论坛程序不像dedecms那样成熟,因为里面夹杂着动态,静态的,需要运行数据库替换,调试。好了,废话不多说了,e58技术小雨儿来给你总结一下昨天做https转换需要哪些步骤!
虽然DiscuzX3.2、X3.3已经针对https做了优化,但仍有很多地方需要改动,经过在几个生产环境的改造中发现,Discuz目前可以完美支持https并显示绿色https图标,不过有些麻烦,且每个环境都会出现自己的问题。
第一步:
全局 > 站点信息 > 网站 URL,修改为https://www.heimaoxuexi.net/的格式
第二步:
修成Discuz适配https
如果你的Web服务是Apache,请忽略这一步,Nginx请继续看:
Discuz判断网站是否启动SSL是采用 $_SERVER[‘HTTPS’] 的方式,此方法不支持Nginx(nginx+php-fpm),需要先做一些修改,让Discuz使用 $_SERVER[‘SERVER_PORT’]来判断网站是否启用SSL。
source/class/discuz/discuz_application.php(约第187行处):
$_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
修改为:
$_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
uc_server/avatar.php (约第13行处):
查找:
define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));
修改为:
define('UC_API', strtolower(($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));
第三步:
Ucenter通信使用https方式
后台 > 站长 > UCenter设置 > UCenter 访问地址,修改为https开头的
UCenter后台 > 应用管理 > 应用的主URL,修改为https开头。
第四步:解决浏览器提示“加载不安全的脚本”
这个提示是因为这个脚本使用http方式加载的原因:
<script src=”http://discuz.gtimg.cn/cloud/scripts/discuz_tips.js?v=1″ type=”text/javascript” charset=”UTF-8″></script>
此脚本的功能是检查补丁和安全通知,用处不大,果断删除。
删除方法:编辑模板的footer.htm,在最后找到并删掉:
解决QQ互联的问题
首先升级QQ互联插件,最低版本要求是 1.18.2,如果升级后依然不行,需要修改回调 URL 为非 HTTPS 的:
找到:
source/plugin/qqconnect/connect.class.php 大约41行
在common_base() 函数里面,将 $_G[‘siteurl’] 直接硬编码为 你的http的URL ,首先修改callback_url,如果不行,将所有包含connect.php 的 URL 全部替换。
将论坛帖子中网站的URL改成https格式的。
会员在发帖的过程中,很可能调用了本站别处的帖子或连接,而这个链接肯定是http的,所以需要将这些链接全部修改成https格式的:
执行SQL语句,可以在DZ后台,或者phpmyadmin中都可以:
UPDATE pre_forum_post SET message=REPLACE(message,’http://旧网址.com’,’https://新网址.com’);
有会员反馈以上SQL升级语句报错:
如果存在该问题则使用以下SQL语句即可:(注意符号标点~)
UPDATE pre_forum_post SET message=REPLACE(message,’http://旧网址.com’,’https://新网址.com’);
-------------------------------------------------------
最后,Nginx开启强制https跳转,在nginx虚拟主机配置文件中,在Server字段增加:
if ($server_port = 80) {
return 301 https://$server_name$request_uri;
}
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
复制代码
注意:这里需要根据自己的服务器环境配置,不正确或者有问题的配置可能导致Ucenter通信失败,Apache需要在.htaccess中添加规则。
Apache .htaccess规则:
等待添加
修改过后,更新缓存,发现大多数链接都变成了https.
2.2、后台设置
在后台还有一些设置,可能会干扰https的使用
后台 > 站长 > UCenter设置 > UCenter 访问地址,修改为https开头的
UCenter后台 > 应用管理 > 应用的主URL,修改为https开头
另外在 后台 > 全局 > 域名设置 中的一些设置也可能使https失效,如果进行了之前的几步还是无法启用,可以暂时删除这里的设置试试。
3、清理缓存
设置完成之后,需要清理缓存,使设置生效。
清理缓存及内存缓存,如果设置了帖子缓存,还需清理数据库内的缓存(清空相应cache数据库,或者静等缓存失效)
至此,Discuz https启用成功,当然,在访问某些页面的时候,可能锁会打上叉。因为页面中加载了其他http内容。可能是统计代码、QQ分享代码、QQ秀头像等,这部分服务暂时没有提供https协议,因而无法启用。只能等待Discuz进一步支持https。
到此,你应该可以看到绿色的https标志了。
|
|