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出現的的問題

 

Discuz X3.4論壇偽靜態規則分享

 

DISCUZ網站部署ssl開啟https訪問頁面錯位的解決方法

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM