站長必備 快速申請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
TAG:數安時代GDCA |