discuz X3.2在系統上是支持https的,不過需要手動修改幾個地方。首先確保服務器端已開啟https,且正確配置了SSL證書。
discuz X3.2開啟支持https主要需要修改一下幾個地方:
1、查找修改文件discuz_application.php :
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;
2、查找修改文件avatar.php :
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、除去非 HTTPS 內容避免提示」不安全內容「
Source/plugin/manyou/Service/DiscuzTips.php ,最後的那段 JS 加載腳本刪除就行。
非樓主層如果有點評,那麼點評者頭像不是 HTTPS 開頭,也需要修改一個文件來適配: template/default/forum/viewthread_node_body.htm (約 180 行),搜索 div class="psta vm">,將下面一行註釋掉或者刪除。
打開瀏覽器,使用開發者工具或者查看源碼逐一排查加載的非 HTTPS 資源並修改。
4、後台設置的修改完善
在後台還有一些設置,可能會干擾 https 的使用。
後台 >全局 > 站點 URL ,改為 https 開頭的
後台 > 站長 > UCenter 設置 > UCenter 訪問地址,修改為 https 開頭的
UCenter 後台 > 應用管理 > 應用的主 URL ,修改為 https 開頭。
修改後可能會顯示通訊失敗,如果 UC 和論壇程序安裝在同一機器,此失敗可無視,實測可以和 UC 正常通訊不影響(測試是否正常通訊程序的 Bug ),如果 UC 和論壇程序不在一台機器上,有可能不能通訊。 另外在 後台 > 全局 > 域名設置 中的一些設置也可能使 https 失效,如果更新緩存後論壇默認連接還是 HTTP ,請刪除 後台 > 全局 > 域名設置 > 應用域名 > 默認 裡面的默認域名(一般去 forum.php 尾巴這裡會有內容,為了 HTTPS 請刪除)。
5、模板的調整
主要在模板的 foot.html 以及 header.html 等文件中,使用工具逐一排查模板文件中寫死的 HTTP 鏈接,修改為 HTTPS 。
6、數據庫的調整
在論壇這種交互社區中,經常回復發帖時會有出現主域名的鏈接,在沒有 HTTPS 之前,鏈接都是 HTTP 開頭,這個時候,我們需要修改數據庫,運行下面的 mysql 命令更新數據庫,將 HTTP 替換為 HTTPS :
進入 DZ 後台:站長 – 數據庫 – 升級
UPDATE pre_forum_post SET message=REPLACE(message,'http://你的網址','https://你的網址');
需要注意的是,出於安全考慮, Discuz 後台默認情況下禁止 SQL 語句直接執行,只能使用常用 SQL 當中的內容,如果想自己隨意書寫 SQL 升級語句,需要將程序文件 config/config_global.php 當中的$_config[admincp][runquery] 設置修改為 1 。
到此,discuz X3.2已經開啟支持https了 。
當然,你還需要申請SSL證書、在服務器端部署SSL證書。
|