Chuyển hướng Loops

Điều gì chuyển hướng loops là, vì sao they take một site xuống cho người dùng và các crawler, phổ biến gây ra (HTTPS/SSL-chế độ mismatches, www so với non-www conflicts, plugin so với máy chủ rules, trailing-slash bugs), và cách diagnose và cách sửa them by nguyên nhân.

Xuất bản lần đầu: 2 thg 7, 2026 · Cập nhật lần cuối: 8 thg 8, 2026 · Advanced
Ngôn ngữ
1 tín hiệu bằng chứng trên trang này

MỘT vòng lặp chuyển hướng là một chain of các chuyển hướng đó circles lại on itself — MỘT → B → MỘT, hoặc một lâu hơn cycle — so không trang bao giờ trả về một 200. Các trình duyệt surface điều này as ERR_TOO_MANY_REDIRECTS; trong Google Search Console đây là một of four được ghi lại gây ra of đó 'Lỗi chuyển hướng' status. đây là một site-outage vấn đề đầu tiên (real khách truy cập là locked out) và an SEO vấn đề second (Google không thể chỉ mục điều gì điều này không thể reach), và Patrick cách diễn đạt là đó điều này harms three parties: người dùng, các crawler, và của bạn own máy chủ. MỘT well-được ghi lại nguyên nhân là an HTTPS/SSL-chế độ mismatch giữa một CDN và đó origin (e.g. Cloudflare on 'Flexible' trong khi đó origin forces HTTPS); other phổ biến gây ra là www/non-www rules pointing tại mỗi other, một plugin rule fighting một máy chủ rule, và trailing-slash bugs — không single nguyên nhân là đó universal hoặc hầu hết phổ biến một trên mỗi site. MỘT loop không phải một hop-count vấn đề — raising đó chuyển hướng limit không bao giờ các cách sửa điều này. Đó cách sửa là luôn cụ thể để đó nguyên nhân: break đó cycle, nhận đó cuối URL để trả về đó correct non-chuyển hướng phản hồi, và cập nhật liên kết nội bộ.

TL;DR — MỘT vòng lặp chuyển hướng là một cycle of các chuyển hướng (MỘT → B → MỘT, hoặc lâu hơn) đó không bao giờ trả về một 200, so điều này không bao giờ resolves. đây là categorically khác nhau từ một dài chain — một chain là chậm, một loop là hỏng — mà là vì sao raising một hop limit không bao giờ các cách sửa một. Điều này surfaces as ERR_TOO_MANY_REDIRECTS trong đó trình duyệt và as một of four được ghi lại gây ra of đó “Redirect error” (bản dịch) «Lỗi chuyển hướng» status trong Search Console. Điều này harms three parties: người dùng (locked out), các crawler (trapped, wasted crawl budget, không có gì được lập chỉ mục), và máy chủ của bạn (wasted các tài nguyên, và — depending on traffic, liệu đó requesting clients lại off, và của bạn capacity/rate limits — potentially serious load). MỘT well-được ghi lại nguyên nhân là an HTTPS/SSL-chế độ mismatch giữa một CDN/proxy và đó origin; others bao gồm www/non-www rules pointing tại mỗi other, một plugin rule fighting một máy chủ rule, và trailing-slash logic bugs — không single nguyên nhân là universally “the most common” (bản dịch) «đó hầu hết phổ biến» trên mỗi site. Đó cách sửa là luôn cụ thể để đó nguyên nhân.

MỘT loop là một cycle, không một dài chain

Đó defining thuộc tính là cyclic routing, không một particular number of hops. Evidence for this claim Primary standard or official documentation supporting the adjacent article claim. Scope: Protocol semantics and Search behavior are kept separate; no indexing, ranking, or migration-timing guarantee is inferred. Confidence: high · Verified: RFC 9110: Redirection Search Console’s label các báo cáo đó failed chuyển hướng path, không đó configuration layer đó đã tạo điều này. Evidence for this claim Primary standard or official documentation supporting the adjacent article claim. Scope: Protocol semantics and Search behavior are kept separate; no indexing, ranking, or migration-timing guarantee is inferred. Confidence: high · Verified: Google: Page indexing report Treat một repeated URL as một mạnh trace heuristic, không tự động proof: yêu cầu state — auth, consent, locale, cookies, hoặc các header — có thể differ giữa visits, và một URL đó looked như điều này đã là cycling có thể resolve khi đó state thay đổi. Xác nhận một đúng loop by reproducing đó cyclic transition dưới materially tương đương yêu cầu state (giống nhau session, giống nhau cookies, giống nhau locale) trước khi bạn call điều này một loop và go cách sửa một rule.

Này là đó phân biệt đó làm mọi thứ khác làm hợp lý. Ở đây cách I define điều này trong my Ahrefs hướng dẫn để các chuyển hướng: chuyển hướng loops là infinite loops of các chuyển hướng đó occur khi một URL các chuyển hướng để itself, hoặc khi một URL trong một chuỗi chuyển hướng các chuyển hướng lại để một URL trước đó trong đó chain.

MỘT chuyển hướng chain (MỘT → B → C → D → cuối) là một path — đây là chỉ lâu hơn điều này nên là. Điều này eventually reaches một trang đó trả về 200. đây là chậm và đây là worth collapsing, nhưng điều này resolves.

MỘT chuyển hướng loop là một circle. MỘT → B → MỘT. Điều này không bao giờ reaches một 200, không quan trọng cách dài bạn follow điều này. đó là vì sao “just increase the redirect limit” (bản dịch) «chỉ increase đó chuyển hướng limit» — một reasonable instinct nếu bạn là thinking về chains — không phải một hợp lệ cách sửa cho một loop. MỘT loop không fail vì một trình duyệt ran out of patience; điều này fails vì có không đích để reach. Bạn có để break đó cycle, không follow hơn hops.

Cách một loop cho thấy lên

Trong đó trình duyệt. Chrome cho thấy ERR_TOO_MANY_REDIRECTS. Firefox says “The page isn’t redirecting properly.” (bản dịch) «Đó trang không chuyển hướng properly.» Safari says “too many redirects occurred.” (bản dịch) «cũng nhiều các chuyển hướng occurred.» Edge cho thấy của nó own “too many redirects” (bản dịch) «cũng nhiều các chuyển hướng» message. Giống nhau root nguyên nhân, khác nhau wording.

Trong Google Search Console. MỘT loop là một of four được ghi lại gây ra of đó “Redirect error” (bản dịch) «Lỗi chuyển hướng» status trong đó Trang Lập chỉ mục báo cáo — đó others đang một chuỗi chuyển hướng đó đã là cũng dài, một chuyển hướng URL đó exceeded đó max URL length, và một bad hoặc empty URL trong đó chain. Nếu bạn là seeing “Redirect error” (bản dịch) «Lỗi chuyển hướng» pile lên trong đó báo cáo, một loop là một of đó four điều này có thể là. Đó báo cáo reflects điều gì Google saw on của nó cuối cùng crawl of đó URL, không một trực tiếp, permanently-hiện tại verdict — re-kiểm tra với URL Inspection sau khi bạn cách sửa đó cycle thay vì assuming đó báo cáo cập nhật instantly. (Đó lỗi chuyển hướng status có của nó own deep dive on này site đó covers all four; này bài viết là đó một cụ thể về đó loop.)

Để các crawler và trong của bạn logs. MỘT crawler đó hits một loop giữ requesting URLs đó giữ chuyển hướng. Well-behaved bots detect điều này và dừng; ít hơn well-behaved ones không, mà là nơi đó máy chủ-load vấn đề xuất hiện từ (dưới).

Vì sao loops quan trọng — three parties nhận hurt

I frame chuyển hướng loops as một three-way vấn đề, vì they không chỉ cost bạn thứ hạng — they hit người dùng, bots, và của bạn own infrastructure:

  • Cho người dùng. They cut off access để đó dự kiến tài nguyên và trigger một “too many redirects” (bản dịch) «cũng nhiều các chuyển hướng» lỗi trong đó trình duyệt. Đó trang là đơn giản unreachable. Này là đó headline: đây là một site-outage vấn đề đầu tiên.
  • Cho bots và các công cụ tìm kiếm. They trap các crawler và waste ngân sách crawl. MỘT crawler không thể follow một loop để bất cứ điều gì indexable, và Google own tài liệu các báo cáo này as một “Redirect error” (bản dịch) «Lỗi chuyển hướng» — có không có gì on đó far side of đó cycle để crawl qua, so có không có gì để chỉ mục hoặc xếp hạng. đây là không một hình phạt; đó trang chỉ functionally không thể là reached. (None of Google thông thường chuyển hướng logic — như các tín hiệu consolidating để một đích theo thời gian — áp dụng, vì có không đích Google bao giờ reaches.)
  • Cho máy chủ của bạn. Loops waste của bạn các tài nguyên. Some bots detect đó loop và lại off; others không, và một client đó giữ re-requesting một looping URL không có backing off adds sustained, wasted load. Liệu đó rises để một serious outage — potentially một self-inflicted DDoS-như event — phụ thuộc vào cách nhiều traffic là hitting đó loop, liệu đó các phản hồi là cacheable, và của bạn máy chủ capacity và rate limiting; điều này không an inherent thuộc tính of mỗi loop, nhưng đây là một real risk on cao-traffic hoặc heavily-được crawl các trang với không rate limiting trong front of them, và đây là an angle hầu hết ghi-ups miss.

Phổ biến gây ra

có không single universal nguyên nhân — mỗi thực tế loop traces lại để conflicting canonicalization rules trên layers đó không share state. Hai khác nhau các hệ thống mỗi “know” điều gì đó correct URL nên là, và they disagree, so they bounce đó yêu cầu lại và forth. Ở đây là đó cụ thể patterns worth kiểm tra; mà một áp dụng phụ thuộc vào của bạn stack, không một fixed frequency xếp hạng.

HTTP/HTTPS conflict giữa một CDN và đó origin

Nếu bạn put một proxy/CDN như Cloudflare trong front of trang web của bạn, đó connection có hai legs: trình duyệt → CDN, và CDN → origin. Nếu những hai legs disagree về HTTP so với HTTPS, bạn nhận một loop hoàn toàn tại đó boundary. Cloudflare’s own khắc phục sự cố doc names này family of gây ra trực tiếp: một misconfigured SSL/TLS Encryption chế độ, conflicting settings on đó Edge Certificates trang, hoặc một misconfigured chuyển hướng rule — phổ biến trong Cloudflare’s own sản phẩm, không nhất thiết đó single hầu hết phổ biến nguyên nhân of loops mọi nơi. Vài concrete branches:

  • Flexible chế độ + origin forces HTTPS. Trong Flexible SSL chế độ, Cloudflare talks để của bạn origin over đơn giản HTTP — mặc dù đó khách truy cập là on HTTPS. Nếu của bạn origin là cũng configured để force HTTP → HTTPS (qua .htaccess, nginx config, hoặc một plugin): Cloudflare gửi HTTP để đó origin, đó origin says “you must use HTTPS” (bản dịch) «bạn phải dùng HTTPS» và các chuyển hướng, Cloudflare (vẫn Flexible) gửi HTTP again, và điều này repeats forever. Cách sửa: chuyển Cloudflare để Đầy đủ hoặc Đầy đủ (strict) SSL/TLS chế độ so đó CDN→origin leg là cũng HTTPS (Đầy đủ strict cần một hợp lệ cert on đó origin).
  • Đầy đủ/Đầy đủ (strict) chế độ + origin các chuyển hướng HTTPS → HTTP. Ít hơn phổ biến, nhưng nếu đó origin có một leftover rule đó các chuyển hướng HTTPS lại để HTTP (e.g. từ trước khi bạn enabled Đầy đủ/strict), đó CDN giữ re-requesting over HTTPS và đó origin giữ bouncing điều này để HTTP. Cách sửa: xóa đó origin-side HTTPS→HTTP rule — đó origin nên serve HTTPS trực tiếp khi đó CDN là set để Đầy đủ/strict.
  • “Always Use HTTPS” (bản dịch) «Luôn Dùng HTTPS» tại đó edge plus an origin-cấp độ HTTPS chuyển hướng. Double-forcing HTTPS tại cả hai đó edge và đó origin (hoặc an HSTS rule fighting một chuyển hướng rule) có thể xây dựng đó giống nhau kind of loop. Cách sửa: pick một place để force HTTPS, không hai.
  • MỘT misconfigured chuyển hướng rule (một Cloudflare Trang Rule, Bulk Chuyển hướng, hoặc Transform Rule đó gửi một URL lại toward một form đây là đã chuyển hướng away từ). Cách sửa: audit edge-cấp độ chuyển hướng rules cho một đó contradicts đó origin own canonicalization.

www / non-www rules đó chuyển hướng vào mỗi other

Bạn muốn một canonical host — either www.example.com hoặc example.com. MỘT loop happens khi một rule gửi example.comwww.example.commột sản phẩm khác rule (thường trong một khác nhau place — một plugin, một CDN chuyển hướng rule, một WordPress “Site Address” (bản dịch) «Site Address» setting) gửi www.example.comexample.com. Mỗi fires, đó other undoes điều này, forever. Cách sửa: decide on một canonical host, và hãy bảo đảm chỉ một rule (trong một place) enforces điều này, chuyển hướng đó other way.

MỘT plugin/CDN rule conflicting với một máy chủ/origin rule

Đó theme đang chạy qua đó gây ra trên là đó loop lives giữa layers. MỘT WordPress SSL-forcing plugin (hoặc đó “WordPress Address” (bản dịch) «WordPress Address» / “Site Address” (bản dịch) «Site Address» các trường trong Settings → Chung) có thể disagree với một .htaccess rewrite hoặc một CDN edge rule. Mỗi layer là individually “correct” nhưng they không share state, so they fight. “My .htaccess looks fine” (bản dịch) «My looks fine» không rule out một loop — đó conflicting rule có thể trực tiếp tại đó edge hoặc trong một plugin bạn forgot đã là ở đó. Cách sửa: tìm đó hai rules đang làm đó giống nhau job trong khác nhau places và xóa một.

Trailing-slash so với không-trailing-slash logic bugs

MỘT rule đó adds một trailing slash (/page/page/) có thể collide với một rule đó strips điều này (/page//page), producing một loop on đó URL. Này là thường một single misconfigured rewrite nơi đó condition và đó đích không line lên. Cách sửa: decide slash hoặc không-slash, và làm đó rule chỉ chuyển hướng đó sai form để đó right một (không bao giờ chuyển hướng một URL để một form đó thì các chuyển hướng lại).

Leftover, stacked rules từ một past migration

Migrations là một phổ biến thực tế nguồn of loops. HTTP → HTTPS moves, www consolidation, domain thay đổi, và CMS replatforms all involve thêm chuyển hướng rules — và khi bạn stack một new layer on top of old rules không ai cleaned lên, hai of them có thể end lên pointing tại mỗi other. Nếu một loop appeared “out of nowhere,” (bản dịch) «out of nowhere,» kiểm tra xem một migration left chuyển hướng rules behind.

Cách diagnose một loop

Bạn muốn để see đó loop, không guess tại điều này.

Trace điều này từ đó command line với an thực tế GET yêu cầu — không một HEAD-chỉ trace. Gửi đó giống nhau kind of yêu cầu một real khách truy cập hoặc crawler sẽ, và record mỗi mã trạng thái và Location header không có letting curl auto-follow đầu tiên, so bạn có thể see mỗi hop thay vì chỉ đó cuối outcome:

# GET is curl's default method (no -I); -L follows redirects; --max-redirs caps how far
curl -sL --max-redirs 10 -D - -o /dev/null https://www.example.com/ | grep -i -E '^(HTTP/|location:)'
# A loop shows the same two (or few) URLs alternating and never a 200 —
# curl stops with "Maximum (10) redirects followed".

Để see đó effective URL tại mỗi dừng:

curl -sL --max-redirs 10 -o /dev/null -w '%{http_code} %{url_effective}\n' https://www.example.com/

Thì so sánh so với một HEAD-chỉ trace (curl -sIL --max-redirs 10 ...) as một phụ kiểm tra, không của bạn chính evidence — HEAD và GET là khác nhau yêu cầu các phương thức, và application logic có thể occasionally xử lý them differently, so một HEAD-chỉ trace có thể miss chuyển hướng behavior đó chỉ cho thấy lên on đó real yêu cầu. Không bao giờ replay unsafe các phương thức (như một form POST) chỉ để trace một loop.

Nếu đó giống nhau host/scheme pair repeats và bạn không bao giờ see một 200, đó là đó loop — và đó hai URLs đó giữ alternating tell bạn chính xác mà canonicalization rule là fighting (scheme = HTTP/HTTPS mismatch; host = www/non-www; trailing slash = đó slash bug). Từ ở đó, map mỗi hop để đó layer đó produced điều này — trình duyệt/HSTS, edge/TLS (CDN), reverse proxy, origin máy chủ, application/CMS, hoặc session/auth logic — vì một loop happens khi hai of những layers không share state và mỗi insists đây là right.

Other ways trong:

  • Trình duyệt DevTools → Network tab. Watch đó chuyển hướng các yêu cầu stack lên trước đó lỗi, với mỗi Location header visible.
  • Kiểm thử với và không có đó CDN. Nếu bạn có thể hit đó origin trực tiếp (bypassing Cloudflare) và điều này không loop, đó conflict là giữa đó CDN và origin — đó points bạn straight tại đó SSL-chế độ nguyên nhân.
  • Google Search Console. URL Inspection on an affected URL, và đó “Redirect error” (bản dịch) «Lỗi chuyển hướng» bucket trong đó Trang Lập chỉ mục báo cáo, tell bạn mà URLs Google là choking on. Google Inspection Tools tài liệu trạng thái đó Inspection Tools không follow các chuyển hướng — so đọc một URL Inspection kết quả as một báo cáo on đó chính xác URL bạn tested, không as xác nhận of điều gì là on đó other side of đó loop.
  • MỘT site-wide crawler — Ahrefs’ Site Audit hoặc Screaming Frog — catches loops bạn không know về. Trong Ahrefs Site Audit: crawl đó site (free với an Ahrefs Quản trị viên web Tools account) → Các chuyển hướng báo cáo → Các vấn đề tab → tìm đó “Redirect loop” (bản dịch) «Vòng lặp chuyển hướng» lỗi, thì “View affected URLs” (bản dịch) «View affected URLs» để see đó đầy đủ chain.

Cách sửa một loop

Khi bạn know đó nguyên nhân, đó structural cách sửa là đó giống nhau decision mỗi khi. Đó best way để cách sửa một loop phụ thuộc vào liệu đó cuối cùng URL trong đó chain — đó một right trước đó loop closes — là đó dự kiến cuối đích:

  • Nếu điều này là đó dự kiến đích: xóa đó chuyển hướng từ đó cuối URL, và hãy bảo đảm đó tài nguyên là thực ra accessible và trả về đó correct non-chuyển hướng phản hồi cho đó endpoint — thường 200, though đó right status phụ thuộc vào đó tài nguyên (một đã xóa trang, chẳng hạn, nên trả về của nó own correct status, không một fake 200).
  • Nếu điều này không: thay đổi đó looping chuyển hướng để point tại đó dự kiến cuối đích thay vì.

Trong cả hai cases, cũng đổi out bất kỳ liên kết nội bộ đó point tại một chuyển hướng URL cho trực tiếp links để đó cuối URL — không giữ feeding đó machine URLs đó chuyển hướng.

Nền tảng-cụ thể các cách sửa:

  • Cloudflare (by SSL chế độ): move từ Flexible để Đầy đủ hoặc Đầy đủ (strict) so đó CDN→origin leg matches đó trình duyệt→CDN leg, và không force HTTPS tại cả hai đó edge (“Always Use HTTPS” (bản dịch) «Luôn Dùng HTTPS») và đó origin. Đầy đủ (strict) cần một hợp lệ certificate on đó origin.
  • WordPress: kiểm tra Settings → Chung — “WordPress Address (URL)” (bản dịch) «WordPress Address (URL)» và “Site Address (URL)” (bản dịch) «Site Address (URL)» nên match của bạn real canonical scheme/host. Thì tìm an SSL-forcing plugin (hoặc một FORCE_SSL_ADMIN / chuyển hướng snippet trong wp-config.php hoặc đó theme) đó duplicates whatever máy chủ của bạn hoặc CDN là đã đang làm, và xóa đó duplicate. MỘT corrupted .htaccess có thể cũng loop — regenerating điều này từ Settings → Permalinks là một phổ biến reset.
  • Apache (.htaccess): hãy bảo đảm của bạn HTTPS-forcing và www-forcing RewriteRules có conditions đó exclude đó đã-correct form, so they chỉ chuyển hướng đó sai version khi.
  • nginx: đó giống nhau principle — một return 301 cho HTTPS hoặc host canonicalization không được fire on các yêu cầu đó là đã trong đó canonical form.

MỘT note on hop limits (đó myth để tránh)

Vì một loop có thể trông giống “too many redirects,” (bản dịch) «cũng nhiều các chuyển hướng,» mọi người reach cho hop-count các giải pháp — raising max-redirs, bumping một chuyển hướng limit trong một plugin. Đó không bao giờ các cách sửa một đúng loop. MỘT loop không phải một “how many hops is too many” (bản dịch) «cách nhiều hops là cũng nhiều» vấn đề đó way một dài chain là; điều này fails on đó đầu tiên truyền regardless of bất kỳ hop tolerance, vì đó cycle không bao giờ terminates. Đó chỉ cách sửa là để break đó cycle.

MỘT note on Bing

Google formally names “redirect loop” (bản dịch) «vòng lặp chuyển hướng» as một of four “Redirect error” (bản dịch) «Lỗi chuyển hướng» gây ra trong của nó Trang Lập chỉ mục tài liệu. Bing công khai hướng dẫn là hơn chung: dùng 301s cho vĩnh viễn moves và tránh unnecessary chuyển hướng chains. Này research đã không surface một Bing trang cụ thể named “redirect loop” (bản dịch) «vòng lặp chuyển hướng» — nhưng đó là một khoảng trống trong điều gì đã là checked, không xác nhận đó Bing có không such hướng dẫn anywhere, so treat đó four-nguyên nhân framework trên as Google-cụ thể thay vì assuming Bing documents loops cùng cách.

MỘT chuỗi chuyển hướng là đó sibling vấn đề — một chain đó là cũng dài là một khác nhau một of đó four “Redirect error” (bản dịch) «Lỗi chuyển hướng» gây ra, và unlike một loop điều này làm eventually resolve. MỘT 301 chuyển hướng là đó chuyển hướng vĩnh viễn bạn’ll thường collapse một loop xuống để; một 302 chuyển hướng là của nó tạm thời đối tác tương ứng. Và đó lỗi chuyển hướng status trong Search Console là đó GSC báo cáo nơi một loop hầu hết thường surfaces cho SEO purposes.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.