WordPress在Apache主機下強制HTTP重定向到HTTPS

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

今天我們來分享一下WordPress在Apache主機下強制HTTP重定向到HTTPS的方法。

按照本文進行操作前,請注意兩點:

  1. 確保您的網站已經配置好ssl證書并開啟了https訪問
  2. 確保您的主機或服務器的運行環境是阿帕奇(Apache)

如果滿足上面的兩個條件,并且想將http強制重定向到https,那就可以參考我們的文章進行設置。

Apache環境下配置重定向規則,一般都通過 .htaccess 文件進行配置,所以,在開始之前,建議您先看下我們之前的文章《網站管理員和Web開發人員.htaccess入門指南

注意:瀏覽器緩存可能會導致無法正確看到配置生效,所以為確保重定向正確無誤,請務必在開始每個代碼測試之前清除瀏覽器cookie和緩存。

HTTP重定向到HTTPS

如果您的WordPress網站可以直接通過https://www.domain.com進行訪問,并且您要將所有訪問者從HTTP重定向到HTTPS,那您可以使用下面兩個選項的配置代碼之一:

選項1:
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

選項2:

RewriteEngine On
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
說明

選項1和選項2都可以將任何訪問http://www.domain.com重定向到https://www.domain.com

選項1代碼將檢查連接是否為TLS / SSL,如果不是,設置重定向;而選項2代碼將檢查站點是否在 80 端口上運行,如果是,設置重定向。

注意:通常最好使用選項1的代碼。語法更加明了,并且無論端口號如何,它都將重定向到HTTPS,因為從技術上講,站點可以在80 以外的其他端口進行訪問。

“非www”到“www”和HTTP到HTTPS

如果要強制將“非www”強制為“www”,并將HTTP強制為HTTPS,則上述.htaccess代碼將無法滿足要求。

為了明確起見,如果您的目標是重定向以下網址:

  • http://www.domain.com
  • http://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,確保最終結果是:www + HTTPS。

“非www”到“www”和HTTP到HTTPS(在子文件夾中)

現在,如果您在一個子文件夾(即www.domain.com/blog/)中托管WordPress網站,則上述.htaccess代碼將無法完美運行。

此處的目標是將所有網址(無論是首頁還是文章頁)都重定向到www + HTTPS 網址。

讓我們看一下各種情況下的可能性。

條件1

我們需要重定向以下所有網址:

  • http://domain.com
  • http://www.domain.com
  • http://domain.com/blog/
  • http://www.domain.com/blog/

統一為以下網址:

  • https://www.domain.com/blog/
條件2

并重定向以下網址:

  • http://domain.com/blog/example-page/
  • http://www.domain.com/blog/example-page/

到:

  • https://www.domain.com/blog/example-page/

當您的WordPress安裝在子文件夾(例如?/blog/)中時,您將有兩個.htaccess文件,即在子文件夾外部有一個.htaccess文件,而在安裝WordPress的文件夾內部有一個.htaccess文件。我們將需要同時更改它們。

.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

在子文件夾內的 .htaccess

接下來,我們將需要更改子文件夾中的.htaccess代碼。

默認情況下,它看起來應該像這樣:

# 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>

有了這兩套代碼,它將確保輸入的所有網址都將包含在www和HTTPS中。

倡萌

一個文科IT宅男,喜歡折騰WordPress和被它折騰 ^_^

暫無評論

發表評論