You click a link, or a page you've visited a hundred times before, and instead of loading you get "This page isn't working" or "Too many redirects." The browser keeps spinning, never actually landing anywhere. It feels like the site is broken — but it isn't, not in the way it looks.
What's actually happening is a redirect loop: one URL is telling the browser to go to another URL, which is telling it to go back to the first one (or somewhere that eventually leads back to it). The browser just keeps following instructions that never end. Once you can see the loop, fixing it is usually a matter of correcting one conflicting rule, not rebuilding anything.
A redirect loop happens when two or more redirect rules point back to each other instead of ending at a real page. To fix it, trace the full redirect chain with a checker tool to find the repeating URL, then correct the conflicting rule — usually in your .htaccess file, CMS redirect settings, or CDN/HTTPS configuration — so the chain ends instead of circling back.
What is a redirect loop?
A redirect loop is a chain of HTTP redirects that never resolves to a final, loadable page. Instead, the last URL in the chain points back to a URL that's already appeared earlier in the sequence, so the browser keeps following redirects until it hits its limit and gives up with an error.
- Self-redirect loop. A single URL redirects to itself, either directly or through a rewrite rule that reapplies to its own output.
- Two-way loop. URL A redirects to URL B, and URL B redirects back to URL A — often caused by two separate systems each trying to "fix" the same URL in opposite directions.
- Chain-then-loop. A longer sequence of redirects (A → B → C → D) eventually leads back to an earlier URL in the chain instead of a final destination.
- Browser error, not a broken page. The destination content itself is often fine — the loop happens before the browser ever gets there, so there's usually nothing wrong with the page's code.
The practical takeaway: a redirect loop is a routing problem between two or more rules, not damage to the page. Find the repeated URL in the chain, and you've found the fix.
Why redirect loops matter
A redirect loop isn't just an inconvenient error message — it has real consequences for both visitors and search engines:
- Visitors can't reach the page at all. A looping URL never loads, so every visitor who hits it — from a search result, a bookmark, or a shared link — bounces immediately.
- Search engines can't crawl or index it. Googlebot follows redirects the same way a browser does, and a looping URL gets flagged as an error instead of being indexed.
- It wastes crawl budget. Every loop a crawler encounters is time and requests spent on a URL that will never resolve, instead of on pages that can actually rank.
- It breaks internal and external links silently. Any link pointing to the looping URL — from your own site, from other sites, or from social shares — stops working without any visible warning.
Step-by-step: finding and fixing a redirect loop
- Confirm it's actually a loop. Reload the URL in a fresh private/incognito window first, since a cached redirect in your regular browser can look identical to a live loop.
- Trace the full redirect chain. Run the URL through a redirect checker tool that lists every hop in order with its status code, rather than guessing from the error message alone.
- Find the repeating URL. The URL that shows up twice in the chain is where the loop closes — everything before it is a normal redirect, everything from there on is the loop.
- Identify which layer set that rule. Check, in order: your .htaccess or server config, your CMS's redirect or SEO plugin settings, and your CDN or reverse proxy's HTTPS/WWW rules — the conflict is usually between two of these.
- Correct the conflicting rule, don't just delete it. Adjust the rule so it redirects to the intended final URL instead of back into the chain, keeping the original intent (like enforcing HTTPS) intact.
- Clear caches before retesting. Purge CDN and browser cache, since an old redirect rule can keep serving from cache even after the underlying config is fixed.
- Re-run the checker to confirm a single, clean chain. The URL should now resolve in one or two hops to a real 200-status page, with no repeated URLs anywhere in the sequence.
Common mistakes that create redirect loops
1. Forcing HTTPS at two layers that disagree
A CDN or load balancer that forces HTTPS, paired with an origin server that separately forces HTTP (or the reverse), is one of the most common causes — each layer keeps sending the request back to the other.
2. Stacking WWW and non-WWW rules in opposite directions
If one rule redirects the non-WWW version to WWW, and another rule (often added later, by a different person or plugin) redirects WWW back to non-WWW, the two rules cancel each other into a loop.
3. Running two redirect plugins or settings at once
A CMS-level redirect setting and a separate SEO or caching plugin can both try to manage the same URL, each unaware of the other's rule, producing a loop neither one alone would cause.
4. Trusting a cached result instead of a fresh one
Testing a fixed redirect in the same browser tab that's already cached the old, looping version can show the loop as "still broken" even after the server-side fix is correct.
Real-world examples
How different redirect loops actually show up, and where the fix usually lives:
In every case, the loop wasn't random — it was two rules, set at different times or by different tools, each unaware the other existed.
Types of redirect loops compared
A quick reference for the most common loop patterns, what usually causes them, and how hard each one typically is to fix.
| Loop type | Common cause | Fix difficulty | Where to look first |
|---|---|---|---|
| Self-redirect loop | A rewrite rule reapplies to its own output | Usually easy | Server config / .htaccess |
| Two-way ping-pong loop | Two rules each redirect to the other's source | Moderate | CMS redirect settings + server config |
| Chain-then-loop | A long chain eventually points back to an earlier hop | Moderate | Full redirect chain trace, hop by hop |
| Cache-based phantom loop | Server config is fixed but CDN/browser cache is stale | Usually easy | CDN purge + private browser window |
Check your redirects right now — free
The Rebrixe Redirect Checker follows every hop of a URL's redirect chain, shows the status code at each step, and flags the exact point where a loop closes — so you're fixing the real cause instead of guessing.