What to send
"This page isn't working. example.com redirected you too many times" (ERR_TOO_MANY_REDIRECTS) means two rules keep sending the browser to each other. It usually appears right after turning on Cloudflare, adding an SSL or "force HTTPS" plugin, changing the www/non-www preference, or moving hosts. To scope the fix, send:
- The site URL and whether the loop affects the whole site, only the admin area, only www or only some paths.
- When it started and what changed just before: Cloudflare turned on, an SSL mode change, a new certificate, a plugin or framework setting, a host or CDN migration.
- The output of
curl -sIL --max-redirs 8 https://your-domain.com/ | grep -iE "^(HTTP|location|server|cf-ray)". - The platform (WordPress, Laravel, Next.js, Magento, plain Apache or Nginx) and the hosting provider.
- Your current Cloudflare SSL/TLS mode (Flexible, Full or Full strict), if Cloudflare is in front.
Send your redirect loop problem for a written scope and reply within 24 hours. Never paste a private key, API token, database password or administrator password into the public inquiry form.
Common causes of an HTTPS redirect loop
- Cloudflare Flexible SSL with an origin that forces HTTPS: Cloudflare connects to your server over plain HTTP, the origin answers
301 Location: https://..., and the visitor is sent back to Cloudflare, which does the same again. This is the single most common cause. - The application cannot see that the request was HTTPS: behind a proxy, PHP or Node sees
httpunless it trusts theX-Forwarded-Protoheader. WordPress'sis_ssl(), Laravel's trusted proxies and Next.js or Expresstrust proxysettings all need to be told. - Two layers both redirecting: for example an
.htaccessrule, an Nginxreturn 301, a host-level "force HTTPS" switch, a Cloudflare Page Rule or Redirect Rule, and a plugin, each correct alone but conflicting together. - www and non-www pointing at each other: one layer redirects to
www, another strips it. - Mismatched site URL settings: in WordPress,
siteurlandhomeset tohttp://or to a different host, orWP_HOMEandWP_SITEURLinwp-config.phpoverriding the database. - A cached 301: browsers and Cloudflare cache permanent redirects, so a corrected configuration still appears broken until the cache is purged.
- Admin-only loops:
FORCE_SSL_ADMINcombined with a proxy that hides HTTPS, a wrong cookie domain, or a cached/wp-adminresponse. - Trailing-slash or locale redirects: a framework adds a trailing slash while an edge rule removes it, or a language redirect bounces between two paths.
Safe checks you can run yourself
- Trace the chain, do not guess. Run
curl -sIL --max-redirs 8 https://your-domain.com/and read eachLocationheader. The two URLs that alternate tell you which layers disagree. - Test in a private window after purging the cache. In Cloudflare use Caching, then Purge Everything, and open the site in a private window so a cached 301 does not mislead you.
- Check the Cloudflare SSL/TLS mode. If it says Flexible and your origin already redirects to HTTPS, that is the loop. Full or Full (strict) with a valid origin certificate is the usual correct setting; change it only once the origin can serve HTTPS.
- Look for duplicate redirect rules. List the Cloudflare Redirect Rules and Page Rules, the web server config and any SSL plugin or framework setting, and note which ones force HTTPS or change the hostname.
- Confirm the site URL values. In WordPress compare Settings, General with
wp-config.php; both URLs should use the same scheme and hostname. - Keep a copy of what you change. Screenshot the current Cloudflare rules and copy the config files first so every step stays reversible.
If the trace shows more than two hosts, or the loop only occurs on some paths or only for logged-in users, stop changing settings and send the details; changing several layers at once makes the original cause harder to prove.
Price, delivery and guarantee
Affordable and low-cost does not mean open-ended: this fix is a $99 fixed price, agreed in writing before work starts, delivered within 48 hours of receiving the required access.
- Fully written. No calls and no project managers.
- Backup first. The change is reproduced and tested on a staging copy or a non-production hostname before production is touched.
- You receive written proof: the redirect trace before and after, the conflicting rule and why it conflicted, what changed and a rollback note.
- Money-back guarantee if the agreed root cause cannot be resolved.
Moving the origin to a new host, issuing certificates across many domains or re-architecting caching is outside the fixed price and receives a separate written quote. Related services: bug fixing, performance optimization if the site is slow rather than looping, and the WordPress care plan for monitored, staged changes.
FAQ
How much does it cost to fix a redirect loop?
The fix is a $99 fixed price for the confirmed issue, including root-cause diagnosis, a staging or non-production test, the fix, written proof and a rollback note. Typical agency hourly rates are higher and open-ended, while very low marketplace gig prices rarely include root-cause diagnosis, staging tests or a guarantee.
What is the best way to fix ERR_TOO_MANY_REDIRECTS?
Trace the redirect chain first, then change the one layer that disagrees. Guessing across Cloudflare, the host, a plugin and the web server usually creates a second problem. When choosing a bug-fix service, look for a fixed price, staging first, a root-cause explanation, written proof and a guarantee.
Will changing Cloudflare to Full (strict) fix it?
Often, but only if the origin has a valid certificate and does not add its own conflicting redirect. Switching blindly can replace a loop with a certificate error. The diagnosis confirms the origin side before the mode is changed.
Why does only the admin area loop?
Usually the application believes the request is HTTP while forcing HTTPS for the admin, because the proxy header is not trusted, or a cookie domain or cached admin response is wrong. See Cloudflare ERR_TOO_MANY_REDIRECTS on WordPress for the WordPress detail.
Does this apply outside WordPress?
Yes. The same loop appears on Laravel, Next.js, Magento and plain Apache or Nginx sites behind a proxy or CDN. The method is the same: trace each hop, find the layers that disagree, fix one.
Can this be done without calls?
Yes. Scope, questions, approval and delivery are all in writing, with scoped, revocable access that you can remove afterwards.
Next step
Send the redirect trace and get a written fixed-price scope within 24 hours.