當前位置:
首頁 > 最新 > 站長必備 快速申請SSL證書,WordPress全站開啟HTTPS

站長必備 快速申請SSL證書,WordPress全站開啟HTTPS

隨著HTTP明文協議的弊端不斷浮現,以及互聯網推出的多項的政策,HTTPS正逐步取代HTTP,成為主流的傳輸協議。同時SSL證書也成為了網站設置HTTPS的最常見的解決方法,但在部署SSL證書的過程中,很多網路用戶都會遇到不同的問題,無法完全正確的部署SSL證書,下面是數安時代(GDCA)為使用WordPress的用戶整理的相關教程:

方法一:傳統方式將 WordPress 開啟整站 HTTPS 協議

1.修改wordpress後台配置中的地址改為https版本

技術分享

通過上面的設置,絕大部分導航中的鏈接就由wordpress系統自動改為HTTPS版本。

2、對於正文中的內部鏈接需要手工修改,修改的方法有兩種:

1)直接在資料庫中更新,更新的sql如下:

update wp_posts set post_content = replace(post_content, 『//www.watch-life.net/』,『https://www.watch-life.net/』)

對於資料庫不熟悉的站長不推薦這種方法,對資料庫錯誤的更新對網站可能是毀滅性的打擊,建議更新前最好備份資料庫。

2)利用wordpress提供的api來重寫鏈接。在使用的主題(themes)的目錄下的 function.php加入如下代碼:

//轉換http為https

function change_ssl(){

if( is_ssl() ){

function change_ssl_main ($content){

$siteurl = get_option(『siteurl』);

$upload_dir = wp_upload_dir();

$content = str_replace( 『http:』.strstr($siteurl, 『//』), strstr($siteurl, 『//』), $content);

$content = str_replace( 『http:』.strstr($upload_dir[『baseurl』], 『//』), strstr($upload_dir[『baseurl』], 『//』), $content);

return $content;

}

ob_start(「change_ssl_main」);

}

}

add_filter(『get_header』, 『change_ssl』);

這個方法優點是可逆,不會對網站的資料庫有什麼影響,可以使網站在HTTP和HTTPS之間自由轉換,推薦使用這種方法。

調整完內部鏈接後,檢查整個網站的頁面,包括首頁,欄目頁,內容頁,sitemap,頁面head部分內容,比如:css,js,canonical等,是否都轉換成了HTTPS版本。

方法二、代碼方式讓 WordPress 開啟整站 HTTPS 協議

我們都知道,我們如果使用了 WordPress 的多媒體上傳和插入圖片附件的時候,附件都被 WordPress 標記為了絕對鏈接,一般需要修改資料庫,但這種方法子凡是非常不推薦的,對於不是非常熟悉資料庫的同學們估計網站直接被毀也是可能的,所以子凡在這裡推薦一種自己正在使用和即將在 Fanly 主題 2.0 支持的一種方法。

以下代碼已於 2017/2/5 更新,不僅僅支持 WordPress 站內鏈接支持 HTTPS 協議,支持多域名的多媒體附件 HTTPS 協議,同時也新增方法二相對鏈接功能支持。

老規矩,編輯當前主題下的 functions.php 文件,加入以下代碼:

代碼一:HTTPS 絕對鏈接替換

//WordPress SSL at 2016/12/29 update

add_filter(『get_header』, 『fanly_ssl』);

function fanly_ssl(){

if( is_ssl() ){

function fanly_ssl_main ($content){

$siteurl = get_option(『siteurl』);

$upload_dir = wp_upload_dir();

$content = str_replace( 『http:』.strstr($siteurl, 『//』), 『https:』.strstr($siteurl, 『//』), $content);

$content = str_replace( 『http:』.strstr($upload_dir[『baseurl』], 『//』), 『https:』.strstr($upload_dir[『baseurl』], 『//』), $content);

return $content;

}

ob_start(「fanly_ssl_main」);

}

}

代碼二:HTTPS 相對鏈接替換

//WordPress SSL

add_filter(『get_header』, 『fanly_ssl』);

function fanly_ssl(){

if( is_ssl() ){

function fanly_ssl_main ($content){

$siteurl = get_option(『siteurl』);

$upload_dir = wp_upload_dir();

$content = str_replace( 『http:』.strstr($siteurl, 『//』), strstr($siteurl, 『//』), $content);

$content = str_replace( 『http:』.strstr($upload_dir[『baseurl』], 『//』), strstr($upload_dir[『baseurl』], 『//』), $content);

return $content;

}

ob_start(「fanly_ssl_main」);

}

}

以上就為大家提供了兩種實現的方式,方法一主要是通過直接修改 WordPress 的配置以及將之前的 http 協議直接通過資料庫執行替換命令修改為 https 協議,這樣算是一個一勞永逸的方式,同樣網站以後也將必須使用 https 協議才能訪問,如果哪天伺服器關閉了 SSL 證書,那麼很遺憾的告訴你,你還需要使用方法一中的方式反過來操作,如果你非常確定網站以後都會使用 https 協議,那麼推薦使用方法一。

開啟登錄和後台的強制 SSL

雖然有了整站的重定向,但我們不妨還是將 WordPress 本身自帶的功能打開,以期更完善的兼容體驗——畢竟是301重定向。

還是找到你網站根目錄裡邊,這次要修改的文件是 config.php,直接在這個文件的末尾另起一行,追加兩行代碼:

/* 強制後台和登錄使用 SSL */

define(『FORCE_SSL_LOGIN』, true);

define(『FORCE_SSL_ADMIN』, true);

站內鏈接支持

很多網站都會遇到這種問題,已經全部正確完成了SSL證書的部署,但在瀏覽器訪問時,HTTPS標識已正確顯示,但綠色安全鎖變成了灰色的嘆號。這讓眾多的用戶感到費解。

這最主要的可能就是圖片的問題了,因為上傳到空間的附件都被 WordPress 標記為了絕對鏈接,而且全都寫入了 「http://」。一般來講,是需要用資料庫替換的,不過這種方法有點小危險,這裡給大家推薦一種方法:使用代碼讓 WordPress 在載入附件之前將鏈接替換就好了!

找到當前主題下的 function.php 文件,編輯,在裡邊代碼的末尾追加如下代碼:

/* 替換圖片鏈接為 https */

function my_content_manipulator($content){

if( is_ssl() ){

$content = str_replace(『http://www.logcg.com/wp-content/uploads』, 『https://www.logcg.com/wp-content/uploads』, $content);

}

return $content;

}

add_filter(『the_content』, 『my_content_manipulator』);

另外,除了這個大頭意外,還需要關心站內的各種內鏈:

修改「菜單」當中的所有「自定義鏈接」為相對路徑;

修改「設置」「常規」里的「站點地址」和「WordPress 地址」為 HTTPS;

整站301跳轉

整站如果啟用HTTPS後運行正常,就可以開始考慮進行整站301跳轉了。如果是Apache伺服器,在.htaccess文件添加如下代碼:

RewriteEngine On

RewriteCond % 80

RewriteRule ^(.*)$ https://www.watch-life.net/$1 [R=301,L]

RewriteCond % ^watch-life.net [NC]

RewriteRule ^(.*)$ https://www.watch-life.net/$1 [L,R=301]

如果是Nginx伺服器,在nginx.conf配置如下代碼:

server {

listen 80 default_server;

server_name www.watch-life.net;

return 301 https://$server_name$request_uri;

}

以上代碼,更換相應的域名即可使用。注意修改或增加配置代碼後,需要重啟web 伺服器。重啟後,訪問原來HTTP的版本,看是否301跳轉為HTTPS的版本。

自此,WordPress整站開啟HTTPS開啟工作全部完成。

如果WordPress用戶想了解更多的SSL證書或者HTTPS的資訊,請關注數安時代(GDCA)。

文章轉載https://www.trustauth.cn/wiki/25103.html


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 數安時代GDCA 的精彩文章:

徵信巨頭信息泄露事件再次發酵,受害人群擴大數百萬

TAG:數安時代GDCA |