重定向過多:此錯誤意味著什麼以及如何修復它
已發表: 2022-09-27“重定向過多”,也稱為重定向循環,如果請求的網頁由於必須遵循無數次重定向以從服務器檢索任何內容而無法加載,瀏覽器將返回錯誤。 重定向循環通常是由服務器端的重定向衝突或 CDN 配置錯誤引起的。
在此修復“重定向過多”錯誤的綜合指南中,您將了解可以在何處配置重定向、重定向循環背後的最常見原因是什麼以及如何逐步解決它們。
什麼是重定向以及它們如何工作?
網站重定向可以定義為在內容交付期間需要採取的步驟,以查找所請求網頁的位置。 雖然對您而言,使用重定向規則實現的更改似乎只反映了網站地址在地址欄中的顯示方式,但您的瀏覽器會在後台執行一系列操作,以確定每個重定向在加載任何內容之前引導的位置來自重定向路徑定義的最終位置的內容。
強制使用 HTTPS、網站的 www 版本或加載另一個域名——重定向廣泛用於網站託管,允許您自定義內容交付。 有多種方法可以設置域重定向,只要配置正確,瀏覽器按照您創建的規則就不會出現任何問題。
臨時和永久重定向
可以配置兩種主要類型的重定向——臨時的和永久的。 根據遇到的重定向類型,Web 服務器將返回 302 或 301 HTTP 狀態代碼。
302 HTTP 響應代碼顯示特定網址被臨時重定向到另一個位置。 但是,有時當您從網站中刪除永久重定向規則但未刷新其緩存時,您會看到遵循臨時重定向,這會阻止更改可見。
如果您使用任何類型的緩存解決方案,包括 WordPress 緩存插件之一,就會發生這種情況。 您的瀏覽器還將存儲您訪問的任何網站的緩存版本,其中包括舊的重定向。
永久重定向返回 301 HTTP 狀態代碼並表明您的網站或其中的某個頁面已被永久移動,如果它是重定向到 HTTPS 或網站的 www 版本,並不一定意味著它的位置在文件系統已更改。
最常見的重定向是什麼?
從 HTTP 到 HTTPS Web 協議和從非 www 到 www 版本的網站重定向是配置的兩個最常見的規則。 重定向到 HTTPS 可確保使用 SSL 證書加密所有 Web 流量,而重定向到 www 通常用於通過使用 CNAME 記錄將內容交付網絡與您的網站集成。
HTTP 到 HTTPS
可以配置從 HTTP 到 HTTPS 的重定向,通常稱為強制 HTTPS,以確保沒有內容通過不安全的 HTTP 連接傳遞給網站訪問者。 如果您的網站上安裝了有效的 SSL/TLS 證書,您通常不需要手動強制使用 HTTPS,但添加此類重定向可能是處理混合內容的方法之一。
混合內容
網站上的混合內容可以定義為基礎 HTML 文件通過 HTTPS 加載但引用的其他資源(包括圖像、Javascript 或 CSS 文件)通過 HTTP 傳遞給訪問者的情況。 即使您安裝了有效的 SSL 證書,如果在網頁上識別出混合內容,瀏覽器仍會顯示安全警告。
設置重定向以解決混合內容的問題通常不是最佳解決方案。 相反,您應該更新網站數據庫中的所有 URL(統一資源定位器)以包含 HTTPS 協議而不是 HTTP。 這可以通過使用 WP CLI 提供的搜索替換功能或 WordPress 插件手動完成。 對於其他內容管理系統,您需要使用數據庫管理工具(如 phpMyAdmin)或從命令行運行 MySQL/MariaDB 查詢來修改地址。
可以配置重定向的 3 個主要位置
重定向通常可以在以下三個主要位置之一進行配置:
- 網絡服務器配置。 Web 服務器使用的全局配置文件包含通常應用於所有託管網站的設置,因此不建議將重定向添加到其中之一。 使用為每個網站單獨創建的本地配置文件是在服務器端設置重定向的標準。
- 內容管理系統配置。 您的內容管理系統將您網站的地址作為常量存儲在數據庫中,可用於強制 HTTPS 或加載它的 www 版本。
- 內容交付網絡配置。 您的 CDN 將強制執行其自己的重定向,該重定向將定義如何準確地從源服務器檢索內容並將其傳遞給網站訪問者。
Web 服務器配置文件中的重定向
您可以在 Web 服務器將讀取的配置文件之一中本地設置重定向規則。 當使用 Apache 作為 Web 服務器時,重定向規則通常設置在網站的本地 .htaccess 文件中。 如果使用 NGINX,則在 NGINX 服務器塊中配置重定向,它代表您網站的全局配置。
您可以在下面看到兩個可以添加到 .htaccess 的重定向——一個強制使用 HTTPS,另一個將所有 Web 請求發送到網站的 www 版本。 需要遵循嚴格的語法規則,否則如果 Apache 在本地配置文件之一中檢測到任何語法錯誤,您就有可能使您的網站崩潰。
如果您為 WordPress 使用任何重定向插件,它們很可能也會將其重定向寫入您的本地 .htaccess 文件。
WordPress 配置中的重定向
WordPress 和其他內容管理系統將網站地址放在數據庫中,每次請求任何內容時都會加載該設置。 該地址代表一個 URL,它由一個域名和一個 Web 協議(HTTP 或 HTTPS)組成。 通過更改數據庫中的 URL,如果安裝了 SSL/TLS 證書,您可以將您的網站重定向到 www 或強制使用 HTTPS。
WordPress 使用 WP_HOME 常量來標識 WordPress 地址設置和 WP_SITEURL 作為站點地址,它們存儲在 wp_options 表中作為 siteurl 和 home。 WordPress 地址設置是指 WordPress 安裝的位置,而站點地址表示您需要在瀏覽器地址欄中鍵入以打開您的網站的 URL。
CDN 強制重定向
您的內容交付網絡配置定義了它如何通過 HTTP 或 HTTPS 從源服務器檢索請求的網頁並將其交付給您的網站訪問者。 確切的過程由選擇的加密模式決定。 現代內容交付網絡提供三種主要的加密類型:
- 完全或端到端加密。 端到端加密確保在內容交付的所有階段都使用 HTTPS。 這意味著從瀏覽器到 CDN 以及從 CDN 到源服務器的所有 Web 請求始終通過 HTTPS 發送。 端到端加密需要兩個 SSL 證書——一個安裝在源服務器上,另一個由 CDN 實現。
- 靈活或部分加密。 部分加密強制來自瀏覽器 CDN 的所有連接通過 HTTPS,而 CDN 將通過 HTTP 連接到源服務器。 但是,您的網站在所有瀏覽器中仍會顯示為安全的。
- 沒有加密。 禁用加密後,內容傳輸將通過 HTTP 進行,所有瀏覽器都會在加載您的網站時顯示安全警告。
如果 CDN 嘗試通過 HTTPS 發起連接,但您的 Web 服務器將 HTTPS 請求重定向到 HTTP,則會創建一個重定向循環,這會導致在您的網站上看到太多重定向錯誤。
“重定向過多”錯誤是什麼意思?
“重定向過多”,通常稱為重定向循環,是一條錯誤消息,指示在內容交付期間由兩個競爭重定向引起的衝突。 當識別到重定向循環時,現代瀏覽器將返回錯誤的以下變體之一:
- 頁面未正確重定向。 您可以在 Firefox 中看到此錯誤消息。
- 頁面不工作。 ERR_TOO_MANY_REDIRECTS 。 一旦陷入重定向循環,谷歌瀏覽器就會顯示此錯誤。
- Safari 無法打開頁面,因為發生了太多重定向。 這樣,Safari 將讓您知道在加載網站之前需要解決哪些重定向衝突。
要修復重定向過多錯誤,您需要查看在 .htaccess 中配置並由內容管理系統強制執行的重定向,並檢查內容交付網絡使用的加密模式(如果您使用了一種加密模式)。
導致網站重定向循環的 3 種最常見的錯誤配置以及如何解決它們
通過所有重定向來識別衝突並不是一件容易的事,特別是如果將一些重定向添加到 Web 服務器的全局配置中,這使得它們在服務器範圍內應用。 但是,有一些非常常見的錯誤配置不可避免地會導致重定向循環。
在您的網站上看到“重定向過多”的三個最常見原因是:
- 缺少有效的 SSL/TLS 證書。 如果您的 SSL 證書已過期或存在任何其他問題,則可能會發生重定向循環,但您的網站仍會嘗試強制使用 HTTPS。
- CMS 網站地址設置不正確。 如果 WordPress 或其他內容管理系統使用的網站地址設置中指定的協議與配置的其他重定向衝突,則會導致重定向過多錯誤。
- 選擇了錯誤的 CDN 加密模式。 在 CDN 配置中切換到完全加密時,尤其常見的是重定向循環。 如果源服務器不滿足使用端到端加密的要求,則可能會導致問題。
缺少有效的 SSL/TLS 證書
安裝在網站上的有效 CA 簽名 SSL/TLS 證書可確保所有網絡流量在從服務器傳送到瀏覽器時都經過加密。 此外,HTTPS 可能是在服務器級別強制執行的,它可以完美運行,直到您的 SSL 證書過期並且不會自動更新。 它可能由於以下原因而發生:
- 未啟用自動 SSL/TLS 證書續訂。 如果 SSL 沒有自動更新,您必須訂購新證書並安裝它。
- SSL 域驗證失敗。 Let's encrypt 或 Sectigo(提供免費證書的最廣泛使用的 SSL 提供商之一)實施不同的挑戰,以驗證您是否控制需要為其頒發新證書的域名。 如果域驗證失敗,在您解決阻止驗證請求的問題之前,不會安裝新證書。
- 根證書或其中一個中間證書已過期。 發生這種情況時,一旦 SSL 提供商解決了他們的問題,您將需要重新安裝您的證書。
如何解決
使用 SSL 檢查器檢查您的網站是否安裝了有效證書。 如果它已過期或 SSL 檢查器顯示任何其他問題,請重新安裝證書。 如果 Let's Encrypt 或 Sectigo 未能頒發免費證書,您將需要檢查可能阻止驗證請求的原因。
SSL 域驗證失敗的原因之一是集成了內容交付網絡,特別是如果上次 Let's Encrypt 或 Sectigo 頒發證書時,您還沒有配置它。 如果您需要安裝新的免費 SSL 證書,請暫停 CDN,以便您的網站直接指向服務器,返回其主 IP 地址,而不是屬於內容分發網絡的 IP 地址。 這樣,您可以在源服務器上更新證書以繼續使用端到端加密。
CMS 網站地址設置不正確
WordPress 和所有其他內容管理系統可以通過將您網站的地址存儲在數據庫中並在每次請求任何內容時加載它來強制重定向到 HTTPS 或 www。 如果站點地址設置設置不正確(使用錯誤的協議或域名),則會導致問題,包括看到過多的重定向錯誤。
如何解決
如果您安裝了 SSL 證書,尤其是在 CDN 配置確保端到端加密的情況下,請在 WordPress 地址和站點地址設置中使用 HTTPS。 如果您將您的網站重定向到 www 版本,則 WP_SITEURL 和 WP_HOME 參賽者都需要反映它。
打開 WordPress 儀表板的常規設置菜單並更正分配給 WordPress 地址和站點地址的值。 單擊保存更改以讓 WordPress 修改數據庫中的設置。
選擇了錯誤的 CDN 加密方式
源服務器上配置的重定向與 CDN 使用的加密模式之間不能有任何衝突,否則您將在嘗試在任何瀏覽器中加載您的網站時看到“重定向過多”錯誤。 確保選擇更適合您網站需求的正確加密模式。
由於內容交付網絡始終對其服務器和瀏覽器之間的流量進行加密,除非您完全禁用加密,否則您可以選擇不在源服務器上安裝 SSL。 選擇部分加密並確保您不在服務器級別強制使用 HTTPS,以避免通過 HTTP 接受來自 CDN 的請求時出現任何問題。
如果選擇端到端加密,則應在源服務器上安裝有效的 SSL 證書,以便 CDN 可以通過 HTTPS 連接。 除非您可以手動安裝新證書,否則每次需要續訂 SSL 時,請暫時暫停您的 CDN 以避免域驗證出現任何問題。
如何解決
查看您當前的設置並決定需要選擇哪種加密模式。 切換到另一種加密類型以修復您網站上的“重定向過多”錯誤,該錯誤是由源服務器上的重定向衝突或支持端到端加密所需的 SSL 導致的。
如何通過 3 個步驟修復“重定向過多”
在以下步驟中,您將學習如何識別衝突的重定向并快速修復您網站上的重定向循環。
步驟 1. 檢查您網站的重定向路徑
許多消息來源建議清除瀏覽器緩存作為解決重定向循環問題的第一步。 但是,與任何其他錯誤一樣,它只有在服務器上已解決問題時才有效,但瀏覽器仍將您網站的損壞版本存儲在其緩存中。 通常,在對您的網站進行任何更改後,您可能希望刷新其緩存以查看它們的反映。
修復“重定向過多”的第一步是按照您網站的重定向路徑查看瀏覽器卡住的確切位置。 最好的方法是使用重定向檢查器之一。
所有或大多數重定向檢查器都使用 cURL,這是一個很棒的命令行工具,用於使用各種網絡協議傳輸數據。 我們可以使用它來獲取 HTTP 標頭信息,這將向您顯示嘗試加載網站後究竟發生了什麼。
通過 SSH 連接到服務器後,將以下簡單的 Bash 腳本保存到名為 redirects.sh 的文件中。 通過運行 chmod +x redirects.sh 使其可執行。
通過將腳本傳遞給您網站的域名來運行該腳本。 例如,./redirects.sh wordpress.com。
步驟 2. 識別衝突的重定向
檢查運行上述腳本的輸出。 當瀏覽器放棄遵循衝突規則時,它將告訴您哪種重定向會導致出現“重定向過多”。 在下面的輸出中,我們可以看到來自 HTTP 和 HTTPS 的無限重定向。
請注意每個重定向的返回狀態代碼。 永久重定向通常來自網站的 .htaccess 文件,而臨時重定向通常在網站代碼中生成,因此它們由 WordPress 或您使用的其他內容管理系統控制。
步驟 3. 解決重定向循環
根據您確定的衝突重定向規則,您將知道在哪裡循環它們。 正如我們所討論的,需要檢查三項主要內容 - 您的本地 .htaccess 文件、CMS 存儲在您網站數據庫中的網站地址設置,以及在 CDN 配置中選擇的加密模式。
如果在您的網站嘗試在 HTTP 和 HTTPS 之間進行重定向時發生重定向循環,請檢查您是否安裝了有效的 SSL/TLS 證書以及在您的 CDN 配置中選擇了哪種加密模式(如果您與您的網站有任何集成)。 檢查為您的網站指定並存儲在 WordPress 數據庫中的站點地址和 WordPress 地址。
按照指南上一部分中提供的說明解決常見的錯誤配置並修復您網站上的“重定向過多”。
結論
當瀏覽器由於隨後的大量重定向而無法加載任何內容時,您的網站上會出現“重定向過多”錯誤消息,也稱為重定向循環。 要修復重定向循環,您需要解決重定向路徑中存在的衝突。
在線開展業務充滿挑戰,花費數小時設置服務器基礎架構和修復錯誤並不總是可行的。 當擁有正確的解決方案可以消除僱用專門團隊來保持您的網站運行沒有任何問題的需要時,這也不是一個好主意。
BackupBuddy 和 iThemes Security Pro 保護大約一百萬個 WordPress 網站,是行業領先的應用程序級安全和數據恢復解決方案。 站點掃描功能提供的定期漏洞檢查和惡意軟件掃描可讓您顯著減少攻擊面並保護您的網站免受所有已知漏洞的影響。 自動備份和簡單的一鍵恢復——BackupBuddy 可以從所有惡意攻擊和常見錯誤中恢復。
保護和保護 WordPress 的最佳 WordPress 安全插件
WordPress 目前為超過 40% 的網站提供支持,因此它已成為惡意黑客的輕鬆目標。 iThemes Security Pro 插件消除了 WordPress 安全性的猜測,使保護您的 WordPress 網站變得容易。 這就像擁有一個全職的安全專家,他們不斷地為您監控和保護您的 WordPress 網站。
Kiki 擁有信息系統管理學士學位和兩年多的 Linux 和 WordPress 經驗。 她目前擔任 Liquid Web 和 Nexcess 的安全專家。 在此之前,Kiki 是 Liquid Web Managed Hosting 支持團隊的一員,在那裡她幫助了數百名 WordPress 網站所有者並了解了他們經常遇到的技術問題。 她對寫作的熱情使她能夠分享她的知識和經驗來幫助人們。 除了科技,Kiki 還喜歡了解太空和收聽真正的犯罪播客。