第一步配置cdn和https
1、首先去阿里雲、騰訊雲、七牛雲等申請免費https證書
2、虛擬主機是不能直接支持https的,需要cdn處理后才可以,並且端口是80
3、開啟cdn加速處理,(買一個cdn資源包,https也需要付費)關閉協議跟隨回源,因為虛擬主機不支持443端口,選擇ip回源,填寫虛擬主機的ip地址,端口是80
4、打開cmd,用ping 加上域名來測試域名解析是否正常,然后在工具那里測試是否啟用了cdn加速。
5.性能優化,開啟頁面優化和只能壓縮。
6、直接用根域名開啟cdn加速就行
以下是阿里雲工單的說明:
CDN加速的源站並沒有限制,並不是說只能加速對象儲存OSS,也支持加速其它的。如果您的圖片放在OSS,那您CDN域名的源站就設置OSS;如果您圖片放在您的web服務器,那么CDN域名的源站就配置對應的服務器IP。
記得80端口。
第二步discuz X3.2開啟支持https主要需要修改一下幾個地方
:1. 、查找修改文件discuz_application.php :(適用於nginx+pfm環境,如果你的虛擬主機請把443改為80端口)
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、解決QQ互聯的問題 (自己可以先測試QQ互聯有沒有問題,我的discuz3.2的沒有問題,所以就跳過這一步驟)
首先升級QQ互聯插件,最低版本要求是 1.18.2,如果升級后依然不行,需要修改回調 URL 為非 HTTPS 的:
找到:
source/plugin/qqconnect/connect.class.php 大約41行
在common_base() 函數里面,將 $_G[‘siteurl’] 直接硬編碼為 你的http的URL ,首先修改callback_url,如果不行,將所有包含connect.php 的 URL 全部替換。
7、將論壇帖子中網站的URL改成https格式的。
會員在發帖的過程中,很可能調用了本站別處的帖子或連接,而這個鏈接肯定是http的,所以需要將這些鏈接全部修改成https格式的:
執行SQL語句,可以在DZ后台,或者phpmyadmin中都可以:
- UPDATE pre_forum_post SET message=REPLACE(message,’http://舊網址.com’,’https://新網址.com’);
復制代碼
8、修改模版各處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);
感謝蔥子博客以及一些博主提供的第二部分說明。真擔心審核不通過!
第三步discuz網站實現綠標以及去掉不安全腳本
- 有一個很坑的就是我的全局—域名設置—應用域名,這里填寫了以前的域名,現在域名是https了,所有用這個就不行了,所以導致頁面一直有重定向的問題,解決方法應用域名留空。
- 網站現在可以訪問還是灰色的https,這其中就是有http的圖片、CSS、JS等問題,外鏈好像是沒有關系的,所以需要一一排查,我用火狐(版本)firebug排查發現很多問題。(要說明現在firebug停止更新了),所以要用firebug排查就需要火狐版本低一些,我的話很多啊!
具體的解決問題
(1)、https訪問時出現http調用外部鏈接的均提示有不安全腳本。此時我們應當找到調用了哪些外部的http鏈接的JS或css
(2)、利用火狐firebug查看(如果有廣告或360、百度聯盟、谷歌聯盟等廣告的先關閉,還有包括百度分享也是不支持https的),我們找到如下四個外部調用的文件
- http://pc1.gtimg.com/js/jquery-1.4.4.min.js
- http://s.pc.qq.com/discuz/css/style.css
- http://discuz.gtimg.cn/cloud/scripts/discuz_tips.js?v=1
- https://openapi.guanjia.qq.com/fcgi-bin/getdzjs?cmd=urlquery_gbk_zh_cn 無效鏈接
復制代碼
(3)、接下來就一個一個的解決吧,第一個JS是因為DZ自帶的電腦管家網址保鏢插件造成的,進入后台關閉該插件即可。第二個是個調用了外部CSS導致的!這個怎么辦呢?原理是把外部的CSS下載到本地來調用吧。下載CSS保存在自己的服務器網站目錄里,修改
\source\plugin\pcmgr_url_safeguard\pcmgr_url_safeguard.class.php下的:
- // $jsscript .= '<link rel="stylesheet" type="text/css" />';
復制代碼
為你的:
- // $jsscript .= '<link rel="stylesheet" type="text/css" />';
復制代碼
(注意:修改后的地址你要保證你下載該外部CSS到你的網站目錄,同時把style.css文件里調用的外部圖片更換成本地圖片路徑)。至此,第二個問題解決。第三個是DZ漫游應用,這段代碼是強制輸出的,根本沒有加判斷。那么我們把它注釋掉即可
找到/source/function/function_core.php
- $tipsService = Cloud::loadClass('Service_DiscuzTips');
- $tipsService->show();
復制代碼
好了!
第四個問題是一個無效鏈接。忽略不管
(4)、JS容錯。程序員在開發時會或多或少對瀏覽器的兼容考慮不周,這時候為了正常使用https我們得寫個JS容錯命令。(如果ie報錯,並導致js無法順利執行完畢,就必須找出報錯的問題所在了,這才是最終的解決方法.)。在頭部加入以下代碼:
- <script type="text/javascript">
- function SlyarErrors() {
- return true;
- }
- window.onerror = SlyarErrors;
- </script>
復制代碼
至此。全部解決。而對於廣告聯盟的外部JS暫時沒有更好的辦法!除非不使用廣告聯盟
感謝零度中國提供具體的解決問題
第四步discuz 插件有問題
- 這里是自己的新的,discuz有一些插件對https是有問題的,比如騰訊分析(cloudstat)、電腦管家網址保護 (pcmgr_url_safeguard)、百度結構化數據提交(聽說是不支持https的)可能還有別的插件等等,所以這里用firebug檢測最好了,檢測好了就關閉插件就行,關閉不了就去ftp刪除對應的插件(刪除前請備份哦!慎用!),然后再關閉插件試試
(1)、下載百度分享必備文件
在下方下載文件即可,解壓密碼為:wuzuowei.net,后得到的static文件夾上傳到網站根目錄(注:域名/static)。
(2)、替換調用代碼
百度分享代碼刪除圖中部分
刪除百度分享代碼中的以下網址
http://bdimg.share.baidu.com
至此,你就解決了百度分享不支持HTTPS的問題,很多的站長就是因為http轉https的過程不能完美,所以沒有給網站加密https協議。
注意:百度分享代碼一般在主題文件里面或者后台設置里面,大家主題不同自己找找就可以找到了
下載百度分享源文件:https://download.csdn.net/download/qq_39937321/10549242
至此你已經可以全站cdn加https訪問了,但是還是有一些帖子頁面編輯的時候復制了別的http的圖片,所以需要慢慢替換了,我也不知道有什么好方法替換圖片,反正是官網不是很大,很快替換好,如果有好方法請留言教導一下,嘻嘻!這是自己親測可行的,不知道有沒有誤導大家,也可以留言反饋,寫這個文檔花了一個小時還沒有寫完吶------額--這個有沒有點贊的功能啊!嘻嘻嘻!