您好,登錄后才能下訂單哦!
如何給Discuz! X3.1/3.2 開啟https,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
教你如何給 Discuz! X3.1/3.2 開啟https(SSL)支持! – HTTPS SSL 教程
DZ作為社區交流系統:1. 對高版本 PHP 兼容不佳 2. 對 HTTPS 兼容不佳 3.目前官方沒有推出一鍵切換方案,那么我們要解決這個問題只能自己動手了。
1、SSL證書&配置
首先,要開啟SSL,總得有一個證書吧?無論是正規CA頒發的,還是自己簽的,沒有肯定是不行的。如果沒有的話,先去申請個吧。(具體方法請谷歌,這里不再贅述)
2、Discuz! 優化
2.1、程序調整
自 Discuz! X3 開始,已經加入了對https的支持,如果你使用https訪問論壇,論壇中的鏈接都會變成https。如果你發現大部分鏈接都已經使用了https,就代表Discuz已經自動識別了,此時,可以跳過本步,直接進入下一步。
Discuz采用 $_SERVER[‘HTTPS’] 的方式來判斷SSL,但是因為VPS架構問題(nginx+php-fpm),無法采用這種方式識別,所以需要對Discuz程序進行一些調整(使用 $_SERVER[‘SERVER_PORT’] 來判斷)。
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’], ‘/’)))); |
修改過后,更新緩存,發現大多數鏈接都變成了https。
2.2、后臺設置
在后臺還有一些設置,可能會干擾https的使用
后臺 > 站長 > UCenter設置 > UCenter 訪問地址,修改為https開頭的
UCenter后臺 > 應用管理 > 應用的主URL,修改為https開頭
另外在 后臺 > 全局 > 域名設置 中的一些設置也可能使https失效,如果進行了之前的幾步還是無法啟用,可以暫時刪除這里的設置試試。
3、清理緩存
設置完成之后,需要清理緩存,使設置生效。
清理緩存及內存緩存,如果設置了帖子緩存,還需清理數據庫內的緩存(清空相應cache數據庫,或者靜等緩存失效)
總結,目的就是修改HTTP頭改成HTTPS。
至此,Discuz https啟用成功,當然,在訪問某些頁面的時候,可能鎖會打上叉。因為頁面中加載了其他http內容。可能是統計代碼、QQ分享代碼、QQ秀頭像等,這部分服務暫時沒有提供https協議,因而無法啟用。只能等待Discuz進一步支持https。
關于如何給Discuz! X3.1/3.2 開啟https問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。