我們推薦務(wù)必使用Https來加載您的網(wǎng)站,這樣可以保護(hù)您的網(wǎng)站和站點(diǎn)用戶數(shù)據(jù)的安全,而且現(xiàn)在很多瀏覽器都強(qiáng)制要求采用HTTPS,否則會(huì)提示此站點(diǎn)不安全。而且Google已經(jīng)將https作為網(wǎng)站排名的一個(gè)參考因素,如果您的網(wǎng)站想要獲得更好的SEO排名,那現(xiàn)在就要開始為您的網(wǎng)站添加HTTPS啦!

今天我們來分享一下WordPress在Apache主機(jī)下強(qiáng)制HTTP重定向到HTTPS的方法。
按照本文進(jìn)行操作前,請注意兩點(diǎn):
- 確保您的網(wǎng)站已經(jīng)配置好ssl證書并開啟了https訪問。
- 確保您的主機(jī)或服務(wù)器的運(yùn)行環(huán)境是阿帕奇(Apache)
如果滿足上面的兩個(gè)條件,并且想將http強(qiáng)制重定向到https,那就可以參考我們的文章進(jìn)行設(shè)置。
Apache環(huán)境下配置重定向規(guī)則,一般都通過 .htaccess 文件進(jìn)行配置,所以,在開始之前,建議您先看下我們之前的文章《網(wǎng)站管理員和Web開發(fā)人員.htaccess入門指南》
注意:瀏覽器緩存可能會(huì)導(dǎo)致無法正確看到配置生效,所以為確保重定向正確無誤,請務(wù)必在開始每個(gè)代碼測試之前清除瀏覽器cookie和緩存。
HTTP重定向到HTTPS
如果您的WordPress網(wǎng)站可以直接通過https://www.domain.com進(jìn)行訪問,并且您要將所有訪問者從HTTP重定向到HTTPS,那您可以使用下面兩個(gè)選項(xiàng)的配置代碼之一:
選項(xiàng)1:
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
選項(xiàng)2:
RewriteEngine On
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
說明
選項(xiàng)1和選項(xiàng)2都可以將任何訪問http://www.domain.com重定向到https://www.domain.com
選項(xiàng)1代碼將檢查連接是否為TLS / SSL,如果不是,設(shè)置重定向;而選項(xiàng)2代碼將檢查站點(diǎn)是否在 80 端口上運(yùn)行,如果是,設(shè)置重定向。
注意:通常最好使用選項(xiàng)1的代碼。語法更加明了,并且無論端口號(hào)如何,它都將重定向到HTTPS,因?yàn)閺募夹g(shù)上講,站點(diǎn)可以在
80以外的其他端口進(jìn)行訪問。
“非www”到“www”和HTTP到HTTPS
如果要強(qiáng)制將“非www”強(qiáng)制為“www”,并將HTTP強(qiáng)制為HTTPS,則上述.htaccess代碼將無法滿足要求。
為了明確起見,如果您的目標(biāo)是重定向以下網(wǎng)址:
http://www.domain.comhttp://domain.com
到:
https://www.domain.com
那么,您將需要使用下面的.htaccess代碼。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain.com$ [NC]
RewriteRule (.*) http://www.domain.com/$1 [R=301,L]
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
說明
首先,它將所有“非www”重定向到“www”,然后再檢查HTTPS,確保最終結(jié)果是:www + HTTPS。
“非www”到“www”和HTTP到HTTPS(在子文件夾中)
現(xiàn)在,如果您在一個(gè)子文件夾(即www.domain.com/blog/)中托管WordPress網(wǎng)站,則上述.htaccess代碼將無法完美運(yùn)行。
此處的目標(biāo)是將所有網(wǎng)址(無論是首頁還是文章頁)都重定向到www + HTTPS 網(wǎng)址。
讓我們看一下各種情況下的可能性。
條件1
我們需要重定向以下所有網(wǎng)址:
http://domain.comhttp://www.domain.comhttp://domain.com/blog/http://www.domain.com/blog/
統(tǒng)一為以下網(wǎng)址:
https://www.domain.com/blog/
條件2
并重定向以下網(wǎng)址:
http://domain.com/blog/example-page/http://www.domain.com/blog/example-page/
到:
https://www.domain.com/blog/example-page/
當(dāng)您的WordPress安裝在子文件夾(例如?/blog/)中時(shí),您將有兩個(gè).htaccess文件,即在子文件夾外部有一個(gè).htaccess文件,而在安裝WordPress的文件夾內(nèi)部有一個(gè).htaccess文件。我們將需要同時(shí)更改它們。
.htaccess blog/ blog/.htaccess
子文件夾外的 .htaccess
將以下代碼插入子文件夾外部的.htaccess中。
RewriteEngine On
### non-www to www, http to https
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_HOST} ^domain.com$ [OR]
RewriteRule (.*) https://www.domain.com/$1 [R=301,L]
### subfolder
RewriteRule ^$ /blog/ [R=301]
這是這段代碼先確保使用HTTPS將域名重定向到www,然后將其重定向到子文件夾。這將滿足上面提到條件1,但還不滿足條件2。
在子文件夾內(nèi)的 .htaccess
接下來,我們將需要更改子文件夾中的.htaccess代碼。
默認(rèn)情況下,它看起來應(yīng)該像這樣:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
將以下代碼放在 “# BEGIN WordPress” 的上方
<IfModule mod_rewrite.c>
RewriteEngine On
## http to https
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
有了這兩套代碼,它將確保輸入的所有網(wǎng)址都將包含在www和HTTPS中。





好像不生效