什麼是 301 重定向以及如何在 WordPress 上配置它
已發表: 2018-07-25301 重定向正在轉發。 它用於將用戶重定向到與他們最初請求的 URL 不同的另一個 URL(頁面或站點條目)。 例如,如果地址欄中的人在正確配置時正在寫 your-site.com,它將轉到 www.your-site.com,反之亦然。
此外,我們將幫助您實施這些重定向,同時保留您現有的流量和 SEO。
五種類型的 URL 重定向
- 301 – 永久重定向。 用於告訴搜索引擎該頁面已經永遠改變了它的位置。 在 99.44% 的情況下,您將使用這種類型。
- 302 - 臨時重定向。 用於告訴搜索引擎該頁面目前已更改其位置,而不是永遠更改。
- 303 - 見其他重定向。 有時它在在線商店中用於檢查具有一次性數據的頁面是否已添加到選項卡或只是更新。 此響應代碼告訴瀏覽器,請求的文檔需要通過 GET 方法請求,即使原始查詢是由另一種方法執行的。 這是為替換 HTTP/1.1 協議中的 302 代碼而輸入的響應代碼。
- 307 - “請求的文檔在不同的 URI 上可在短時間內使用”,告訴瀏覽器請求的文檔需要通過主請求的方法(GET / POST)來請求,更改查詢方法被禁止。 也輸入了這個響應碼來代替 HTTP/1.1 協議中的 302 碼。 臨時重定向。 它的工作方式類似於 303 重定向,但信息從一個頁面傳輸到另一個頁面的方式發生了一些變化。
- 308 - “請求的文檔最終遷移到了新的 URI”,這個響應代碼被添加到 HTTP / 1.1 而不是代碼 301,另外它意味著當一個新的請求方法(GET / POST)不允許改變URI 已遷移。 如果您在第一個查詢中使用 GET 方法請求了資源,那麼第二個查詢也必須使用 GET 方法執行。
最常見的重定向,應答碼是 301,所以重定向也稱為 301 重定向。 本文中的所有示例都將使用此響應代碼。 您可以通過不同的方式配置 301 重定向:PHP、JS、.htaccess,也可以使用特殊插件。
我們將看看如何使用重定向插件執行此操作,以及編輯 .htaccess 文件。
WordPress 重定向插件
手動向站點添加重定向的過程可能非常複雜,因為在這種情況下,需要編輯 .htaccess 文件。 但是在 WordPress 世界中,John Godley 提供了一個很棒的重定向插件,它可以直接在 WordPress 控制台中處理重定向。
這個插件已經上市很長時間了,並且很受歡迎,因為它很容易將地址列表導入到表格中,因此您不必手動輸入所有重定向。
要安裝插件,只需在插件中的搜索中輸入“重定向”→在您的 WordPress 控制台中添加新的。
激活後,您可以通過工具→重定向找到插件菜單。
要手動創建重定向,只需在相應字段中輸入源 URL 和新目標 URL,然後單擊“添加重定向”按鈕。 當您只需要進行一些更改時,這是一種出色而簡單的方法。
通過編輯 .htaccess 文件添加 301 重定向
在主機管理部分,指定通過 FTP 連接到您的站點文件的數據。 要連接,您需要使用 ftp 客戶端,例如 FileZilla。
連接後,我們開始編輯 .htaccess 文件。 它位於您網站的根目錄中。
對於編輯,有必要使用這樣的代碼編輯器,其中可以指定行尾的編碼和格式,例如 Notepad ++。
重定向示例:

HTTP 到 HTTPS 重定向
將 http://example.com 重定向到 https://example.com,包括所有網站鏈接:
連接 ssl 證書後,您應該添加從 http 到 https 的強制重定向,以便加密所有連接。 這樣的重定向將排除通過 http 協議進行連接的可能性。
為此,請在 .htaccess 文件的最開頭插入以下代碼:
# BEGIN Redirect RewriteEngine On RewriteCond% {HTTP: X-Forwarded-Proto}! Https RewriteRule ^ (. *) $ Https: //% {HTTP_HOST}% {REQUEST_URI} [L, R = 301] # END Redirect
WWW 到非 WWW 重定向
從 www.example.com 重定向到 example.com,包括鏈接:
# BEGIN Redirect RewriteEngine On RewriteBase / RewriteCond% {HTTP_HOST} ^ www. (. *) $ [NC] RewriteRule ^ (. *) $ Http: //% 1 / $ 1 [R = 301, L] # END Redirect
請注意,如果您附加了 ssl 證書,則該行:
RewriteRule ^ (. *) $ Http: //% 1 / $ 1 [R = 301, L]
值得更改為:
RewriteRule ^ (. *) $ Https: //% 1 / $ 1 [R = 301, L]
非 WWW 到 WWW 重定向
# BEGIN Redirect RewriteEngine On RewriteCond% {HTTP_HOST}! ^ Www. RewriteRule ^ (. *) $ Http: //www.% {HTTP_HOST} / $ 1 [R = 301, L] # END Redirect
請注意,如果您附加了 ssl 證書,則該行:
RewriteRule ^ (. *) $ Http: //www.% {HTTP_HOST} / $ 1 [R = 301, L]
值得更改為:
RewriteRule ^ (. *) $ Https: //www.% {HTTP_HOST} / $ 1 [R = 301, L]
設置此重定向時,您需要通過添加 www 更改數據庫中站點的名稱。 您需要通過編輯行在 phpMyAdmin 中執行此操作
wp_options 表中的 siteurl 和 home(如果數據庫中的表前綴是“wp_”)。
在 .htaccess 文件中使用重定向
如果您想使用上述幾個重定向,您應該按以下順序編寫它們:
從 www.example.com 重定向到 example.com 或將 example.com 重定向到 www.example.com。
將 http://example.com 重定向到 https://example.com。
還有許多其他規則,特別是使用正則表達式。 但它們是單獨的,不需要像上面描述的那樣頻繁,它們的描述超出了本文的範圍。
如果您需要編寫更複雜的重定向規則,我們建議您查看 apache 2 Web 服務器及其 mod_rewrite 模塊的文檔,以及 PCRE 格式的正則表達式:
https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html
https://httpd.apache.org/docs/2.4/rewrite/
http://pcre.org/current/doc/html/