• Discuz!启用HTTPS问题解决方法


    Discuz! X 3.4 论坛如何实现全站 https 访问

    摘要:在主机开启 SSL 功能后,https 访问倒是正常的,但浏览器上的绿色小锁并没有出现,而且网站导航上的链接还是 http 的。

    网站开启 https 加密访问, 现在基本已经成为标配了。之前“中华马氏网”是托管在阿里云的虚拟主机上的,无法实现 SSL 加密访问,这次迁移到老薛主机后,可以一键开启 SSL 功能。

    但在主机开启 SSL 功能后,https 访问倒是正常的,但浏览器上的绿色小锁并没有出现,而且网站导航上的链接还是 http 的,显然网站的 https 访问设置并不完全。

    网站是用 Discuz! X 3.4 Release 20171001 搭建的,这个 php 网络论坛程序近几年已经很少更新,估计没有添加上 https 访问的功能设置。在官方论坛上看到了一则相关的修改文章,按步骤操作后,成功实现绿色小锁,特介绍给大家。

    一、需要修改3个源文件(修改前请记得做好文件备份):

    1、 source/class/discuz/discuz_application.php (大概在第 190 行处)

    查找: $_G[‘isHTTPS’] = 

    这一行直接修改为: $_G[‘isHTTPS’] = true;

    2、 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’], ‘/’))));

    3、template/default/common/header.htm

    查找: http:// 全部替换为: https://

    二、完成源代码修改后,还需更改4处网站设置。

    1、在后台 – 全局 – 网站 URL 填写

    https://你的网址

    2、在后台 站长 – UCenter 设置 – UCenter 访问地址填写
    https://你的网址/uc_server

    3、在后台 – UCenter – 应用管理 – 点右边的编辑 – 应用的主 URL 填写

    https://你的网址

    如果点击 UCenter 后出现空白,请右击新窗口打开。

    4、后台界面-风格管理,点击更新 CSS 缓存,更新缓存,完成!

    三、最后我们再对搜索引擎进行一些优化:

    方法一: 做301跳转(百度推荐)

    APache 版本在伪静态规则中添加:

    RewriteEngine on
    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule ^(.*)?$ https://%{SERVER_NAME}/$1 [L,R]

    方法二 (站长推荐)

    在后台全局 – 站点信息,下面的“网站第三方统计代码”处粘贴以下代码,即可完成搜索引擎已经收录的 http 访问不跳转 https 问题。

    <script type=”text/javascript”>
    var url = window.location.href;
                    if (url.indexOf(“https”) < 0) {
                        url = url.replace(“http:”, “https:”);
                        window.location.replace(url);
                    }
    </script>

    注意:请不要在全局 – SEO设置-其他-其他头部信息 处粘贴代码,这样在帖内不显示这段代码的。

    Discuz!教程之启用HTTPS后解决各处遗留http://网址问题

    首先,申请并且配置好服务器ssl证书(阿里、腾讯都有免费的,同时都有教程)

    配置完毕后需要配置以下几处

    1.后台,全局,站点URL

    2.后台,站长,ucenter设置

    3.ucenter,应用,编辑

    4.修改模版各处http://为https://

    这里为模版文件较多的用户提供一个简单的批量的https://模版替换教程(开启伪静态的可用)

    打开source/function/function_core.php

    搜索

    $content = output_replace($content);

    在下面加入

    $content = str_replace('http://www.xxx.com','https://www.xxx.com',$content);

    如果你有多个二级域名,可以加入

    $content = preg_replace('http://(.*?)xxx.com','https://1xxx.com',$content);


     通过以上方法把http可以完美开启https,但是原来的开启伪静态的方法不能正常使用,如果还是按原来开seo伪静态的方法(

    详解如何设置Discuz论坛伪静态

    ),则会提示未登录用户访问的链接全找不到,还有就是登录用户发帖会出现假失败(提示发布后,网页内容链接找不到,后退后,测试发布的内容确实成功发布了),目前只有关闭原来开伪静态的方法,最后请教高手留言解决方法,先谢谢了。


    DISCUZ开启SSL https访问

    dz论坛伪静态加http跳转https遗留问题apache配置ssl

    Discuz X3.4 3.3 3.2论坛使用SSL完美开启https教程开启小绿锁

     [求助] 史上最全!discuz X3.2开启https的教程

    [求助discuz使用https出现的的问题

  • 相关阅读:
    LeetCode题目:Gray Code
    LeetCode题目: Remove Duplicate Letters
    非阻塞socket中read、write返回值
    C连接MySql
    使用GDB调试程序
    C语言中使用库函数解析命令行参数
    把服务器当网盘玩 教你从云服务器下载自己的文件
    微信小程序 地图选点 获取用户选择的定位信息 wx.chooseLocation
    如何避免高不成低不就? 疫情当下Java学习路线分享
    微信小程序 获取手机号 JS
  • 原文地址:https://www.cnblogs.com/it-tsz/p/14187139.html
Copyright © 2020-2023  润新知