讓 Discuz X2.5 支援 https 協定

Discuz! 在 X3 之後才內建支援 https 協定
因為不想大幅度升級,所以決定以修改的方式讓 X2.5 版能支援 https 協定

花了不少時間追原始碼,初步修改後大致上可以同時使用 http 和 https 兩種協定進入論壇
使用 https 進入論壇時,論壇畫面、主題列表 都沒問題
但是點入文章後,很容易就被瀏覽器提醒 連線可能有安全漏洞

原因是論壇本就開放式架構,任何人張貼連外的連結或圖片或其他任何資源
只要連外不是使用 https 連結的,都會被視為不安全的連線
所以多數的論壇都維持使用 http 協定,頂多就是登入時使用 https 而已

既然已經修改了,就紀錄一下修改的方法

要修改的檔案如下

  1. 檔案:source/class/discuz/discuz_application.php
    搜尋 $_G = array( (約110行),然後修改成如下

    接著修改以下6個地方
  2. 檔案:source/function/function_core.php
    搜尋: $ucenterurl = empty($ucenterurl) ? $_G['setting']['ucenterurl'] : $ucenterurl;
    修改成下面這樣
  3. 檔案: uc_server/admin.php
    在檔案開頭附近可以看到 define('IN_UC', TRUE); 修改如下
  4. 檔案: uc_server/avatar.php
    在檔案開頭可以看到 error_reporting(0); 修改如下

     

以上4個檔案改完後
開啟瀏覽器以 https 連線到論壇,應該都能正常顯示
會說應該是因為鸚鵡設定論壇時,關閉了全局設定中大部份的緩存功能
如果不能正常顯示,清除緩存後應該就可以解決

管理中心也可以正常進入,唯獨 UCenter 會有小狀況
以 http 協定在 管理中心 進入 UCenter 時沒有問題
但 https 協定在 管理中心 進入 UCenter 時會沒有畫面

這時候進入「站長」=>「UCenter 設置」畫面
將 「UCenter 訪問地址」由 http 改為 https 後

以 http 協定在 管理中心 進入 UCenter 時,左邊的選單沒辦法顯示
但 https 協定在 管理中心 進入 UCenter 時沒有問題,正常顯示

最後 鸚鵡 選擇的作法是:
「UCenter 訪問地址」 固定使用 https 協定,進入 管理中心 時也統一使用 https 協定
所以要改修改一個檔案

檔案:論壇目錄內的 admin.php
在檔案開頭的地方修改成如下

這樣在 http 協定點進 管理中心 時,會自動導向 https 協定

最後只要確認把論壇中有導入站外資源的部份都修改成使用 https 協定即可

 

以上就是鸚鵡修改的方式
在完全使用論壇資源時瀏覽器不會提示連線不安全