TOO_MANY_REDIRECTS(過多重定向)是網(wǎng)站常見錯誤。這個問題會影響用戶訪問和 SEO 收錄。本文會講解 Nginx 配置錯誤導(dǎo)致 TOO_MANY_REDIRECTS 的排查思路與解決方案。
![圖片[1]-Nginx 配置錯誤導(dǎo)致 TOO_MANY_REDIRECTS 的排查方法](http://gqxi.cn/wp-content/uploads/2025/07/20250705140906913-image.png)
1. TOO_MANY_REDIRECTS 錯誤原理
瀏覽器訪問網(wǎng)站時,如果服務(wù)器配置了錯誤的重定向規(guī)則,導(dǎo)致請求在多個 URL 之間無限跳轉(zhuǎn)(例如 HTTP 與 HTTPS、帶 www 與不帶 www 之間相互跳轉(zhuǎn)),最終瀏覽器為防止死循環(huán),返回 TOO_MANY_REDIRECTS 錯誤。
常見表現(xiàn):
- 頁面加載失敗,提示 ERR_TOO_MANY_REDIRECTS
- F12 開發(fā)者工具 Network 面板顯示重復(fù)的 301 或 302 重定向
2. 排查前的準(zhǔn)備
在排查前,先確認(rèn)以下信息:
- 網(wǎng)站使用的域名(是否有 www 與非 www 混用)
- 是否配置了 SSL(HTTPS)
- 是否使用了 CDN 或反向代理(如 Cloudflare)
3. Nginx 配置導(dǎo)致重定向錯誤的常見原因
3.1 HTTP 與 HTTPS 配置沖突
如果同時配置了 HTTP 自動跳轉(zhuǎn) HTTPS,而 HTTPS 配置又跳回 HTTP,會形成無限循環(huán)。
![圖片[2]-Nginx 配置錯誤導(dǎo)致 TOO_MANY_REDIRECTS 的排查方法](http://gqxi.cn/wp-content/uploads/2025/07/20250705141336307-image.png)
典型錯誤示例:
server {
listen 80;
server_name example.com;
return 301 http://example.com$request_uri; # 錯誤:跳轉(zhuǎn)到 http
}
server {
listen 443 ssl;
server_name example.com;
return 301 https://example.com$request_uri;
}
此配置將 HTTP 請求重定向到 HTTP(自身),HTTPS 請求重定向到 HTTPS(自身),沒有完成預(yù)期的 HTTP -> HTTPS 跳轉(zhuǎn)。
3.2 www 與非 www 重定向配置錯誤
當(dāng) www 與非 www 互相跳轉(zhuǎn)時,也會產(chǎn)生 TOO_MANY_REDIRECTS。
錯誤配置示例:
server {
server_name example.com;
return 301 http://www.example.com$request_uri;
}
server {
server_name www.example.com;
return 301 http://example.com$request_uri;
}
此配置會導(dǎo)致:
- 訪問 example.com 跳到 www.example.com
- 訪問 www.example.com 又跳回 example.com
- 無限循環(huán)
3.3 反向代理與 HTTPS 配置沖突
用了 Cloudflare、寶塔反向代理或 CDN 后,如果沒配好 X-Forwarded-Proto
這個參數(shù),Nginx 可能會認(rèn)錯網(wǎng)址協(xié)議(把 HTTPS 當(dāng)成 HTTP),導(dǎo)致頁面跳轉(zhuǎn)出錯。
解決方法:
在配置文件中添加:
配置文件通常在以下位置之一:
- nginx / 打開 nginx.conf (主配置文件,不建議直接編輯 server 塊)
![圖片[3]-Nginx 配置錯誤導(dǎo)致 TOO_MANY_REDIRECTS 的排查方法](http://gqxi.cn/wp-content/uploads/2025/07/20250705142500980-image.png)
server {
listen 80;
server_name example.com www.example.com;
set $https_off "";
if ($http_x_forwarded_proto != "https") {
set $https_off "redirect";
}
if ($https_off = "redirect") {
return 301 https://$host$request_uri;
}
}
或使用標(biāo)準(zhǔn)方式:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
在 HTTPS 配置中加入:
server {
listen 443 ssl;
server_name example.com www.example.com;
# 配置 SSL 證書...
}
同時在 Nginx 全局配置 fastcgi_params
文件或 server 段內(nèi)添加:
fastcgi_param HTTPS on;
確保反向代理傳遞了 HTTPS 信息。
4. 系統(tǒng)排查流程
下面是排查 TOO_MANY_REDIRECTS 的推薦步驟:
- 檢查瀏覽器 Network 面板
查看跳轉(zhuǎn)鏈路,確認(rèn)是 HTTP 與 HTTPS 之間循環(huán),還是 www 與非 www 之間循環(huán)。 - 查看 Nginx 配置文件
- 是否存在多個 server_name 重復(fù)配置
- 是否 return 301 指向了相同域名導(dǎo)致循環(huán)
- 確認(rèn)反向代理配置 如果使用了 Cloudflare,確認(rèn) “SSL/TLS 模式” 選擇了 Full (strict),避免 Flexible 模式造成循環(huán)。
- 查看 WordPress 或其他 CMS 設(shè)置 若網(wǎng)站 URL 設(shè)置為 HTTP,但服務(wù)器配置了強制 HTTPS,也可能導(dǎo)致重復(fù)跳轉(zhuǎn)。
![圖片[4]-Nginx 配置錯誤導(dǎo)致 TOO_MANY_REDIRECTS 的排查方法](http://gqxi.cn/wp-content/uploads/2025/07/20250705175605861-image.png)
- 清除瀏覽器與 CDN 緩存 有時配置已修改,但緩存沒有更新,還是顯示舊的錯誤。
總結(jié)
TOO_MANY_REDIRECTS 是 Nginx 配置中常見問題,關(guān)鍵是 避免重定向循環(huán)。檢查 HTTP 與 HTTPS、www 與非 www 配置,結(jié)合 Web 服務(wù)器、CDN 和應(yīng)用設(shè)置排查,可以解決這類錯誤。
聯(lián)系我們 | |
---|---|
教程看不懂?聯(lián)系我們?yōu)槟赓M解答!免費助力個人,小企站點! |
![]() 客服微信
|
① 電話:020-2206-9892 | |
② QQ咨詢:1025174874 | |
③ 郵件:info@361sale.com | |
④ 工作時間:周一至周五,9:30-18:30,節(jié)假日休息 |
暫無評論內(nèi)容