RBRunbook
Networking

How to Fix "Too Many Redirects" Errors on Your Website

This error almost always traces back to a conflict between your CMS's HTTPS setting and your CDN's SSL mode. Here's how to find the actual loop.

DifficultyIntermediate
Time15–20 min
PlatformWordPress / any CMS
CategoryNetworking

"Too many redirects" means your browser followed a chain of redirects that never resolved — often because two different systems (your CMS, a CDN, a caching plugin, or a proxy) each think the other one is supposed to handle HTTPS, and each keeps redirecting to "fix" it.

01See the actual redirect chain

Don't guess — trace it directly from the command line:

curl -IL https://yourdomain.com

This prints every redirect in the chain with its status code and destination. If you see it bouncing between http:// and https:// repeatedly, that confirms an HTTPS-handling conflict rather than a plugin or page-level redirect rule.

02The most common cause: CDN "Flexible" SSL mode

If you use Cloudflare (or a similar CDN) with SSL set to "Flexible," it terminates HTTPS at the CDN edge but talks to your actual server over plain HTTP. If your server is also configured to force HTTPS (common with WordPress's "Force SSL" plugins), it redirects that incoming HTTP request back to HTTPS — which the CDN then re-terminates and sends as HTTP again, forever.

Fix: in Cloudflare, change SSL mode from "Flexible" to "Full" or "Full (Strict)" so the CDN talks to your origin over real HTTPS too, matching what your server expects.

03Check your WordPress site URL settings

Settings → General — if "WordPress Address" and "Site Address" use http:// while the site is actually being forced to https:// elsewhere, that mismatch alone can cause a loop. Both should use https://.

04Check .htaccess for duplicate redirect rules

Multiple plugins (an SEO plugin, a security plugin, and a caching plugin) sometimes each write their own HTTPS-forcing rule into .htaccess, and having more than one active creates a loop. Look for repeated blocks starting with RewriteCond %{HTTPS} off and remove all but one.

05Clear cache at every layer, in order

After fixing the underlying cause, old redirects can be cached at multiple layers:

  1. Your CMS's caching plugin (clear it in its settings).
  2. Your CDN's edge cache (Cloudflare: Caching → Configuration → Purge Everything).
  3. Your own browser (test in an incognito window to rule this out).
If you manage the CDN and the server The general rule: if your CDN offloads/terminates HTTPS (most do), your server should still be reachable over HTTPS from the CDN's side too — "Flexible" mode is meant as a stopgap for origins that can't do HTTPS at all, not a permanent setup alongside a server that forces HTTPS.
JM
Written by Jordan Malik Senior Editor, Systems & Networking — guide tested on a live WordPress / any CMS setup before publishing
Last verified: July 2026