请选择 进入手机版 | 继续访问电脑版

巅峰霸主

 找回密码
 立即注册

QQ登录

只需一步,快速开始

discuz X3.3配置ssl全站http跳转https且利于SEO的方法

[复制链接] [添加相关主题]
烈火大地 发表于 2017-5-9 13:58:24 | 显示全部楼层 |阅读模式
discuz临潼X3.3版本,首先配置好ssl证书,确保网站通过https能正常访问。

进入后台 站长——UCenter设置——UCenter 访问地址,将URL修改为https的。

然后计入后台——应用,将QQ互联关闭,这玩意不知道为什么,已开启https就会提示不安全的感叹号,关闭了就好了,不能用,如果要用https就只能和QQ互联拜拜,没有办法。

然后进入后台——UCenter——应用管理——编辑你的应用,将网址修改为https的。改完后会发现通信失败了,不过没有关系,继续往下:打开 uc_server/model/misc.php 文件,查找以下代码(约68行左右)
  1. $port = !empty($matches['port']) ? $matches['port'] : ($matches['scheme'] == 'https' ? 443 : 80);
复制代码
在上面代码的后面添加以下代码:
  1. if(substr($url,0,5)=='https'){
  2.         $ch = curl_init($url);
  3.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  4.         if($post){
  5.         curl_setopt($ch, CURLOPT_POST, 1);
  6.         curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
  7.         }
  8.         if($cookie){
  9.         curl_setopt($ch, CURLOPT_COOKIE, $cookie);
  10.         }
  11.         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  12.         return curl_exec($ch);
  13. }
复制代码
这样就解决了UCenter通信失败的问题。


下面设置访问http的时候自动跳转到https的域名。
打开 source/class/class_core.php 文件,在
  1. set_exception_handler(array('core', 'handleException'));
复制代码

后面加入以下代码:
  1. if($_SERVER['SERVER_PORT'] != '443' && $_SERVER['PHP_SELF'] != '/api/uc.php') {
  2.         if(!preg_match("/(Zidingyi|Bot|Crawl|Spider|slurp|sohu-search|lycos|robozilla)/i", $_SERVER['HTTP_USER_AGENT'])) {
  3.                 header('HTTP/1.1 301 Moved Permanently');
  4.                 header('Location: https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
  5.                 exit;
  6.         } elseif(preg_match("/(Baidu|Google)/i", $_SERVER['HTTP_USER_AGENT'])) {
  7.                 header('HTTP/1.1 403 Forbidden');
  8.                 exit;
  9.         }
  10. }
复制代码


说明:当访问端口不为443(即https)时,如果不是搜索引擎则跳转到https页面,否则如果是百度或Google蜘蛛(这两个搜索引擎已支持收录https)则返回403禁止访问,避免重复收录 http 和 https 或优先收录了 http ,其它搜索引擎未定义,正常返回 http 页面(其它搜索引擎可能不支持收录 https ,因此开放 http 给他们)。
以上代码中“Zidingyi”可以任意修改,管理员使用以下UA可以不跳转到https,便于对http版进行调测:
Mozilla/5.0 (compatible; Zidingyi/2015; +http://www.xxx.com)

这样就可以了,其他的不用改,即便页面还有非https的链接,在浏览上面显示完全正确。


上一篇:discuz https通信失败,discuz开启https后UCenter应用通信失败解决
下一篇:discuz上传附件提示文件太大,上传附件大小设置突破2m方法

相关帖子

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|巅峰霸主 ( 京ICP备12023415号-2 )

声明:本站的任何信息和内容仅代表作者的立场和观点,与巅峰霸主网无关。

禁止在巅峰霸主网发布任何与《中华人民共和国法律》相抵触的言论!

GMT+8, 2020-5-31 11:44 , Processed in 0.095712 second(s), 25 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表