Fix ERR_TOO_MANY_REDIRECTS in WordPress (2026): The 6 Real Causes
Disclosure: some links on this page are affiliate links. We may earn a commission at no extra cost to you. How we test and rate hosts.
ERR_TOO_MANY_REDIRECTS is not a mystery - it's a loop. Your site bounces the browser between two URLs until Chrome gives up. The fix is always the same idea: find the two URLs in the loop, then remove the rule that creates one of them. Work the 6 causes below in order - 80% of cases die at step 2 or 3.
Step 0: Read the Loop First
Open DevTools (F12) > Network, reload the page, and watch the 301/302 chain. The two alternating URLs tell you the cause before you touch anything:
- -
httpvshttpsversions looping = SSL/proxy mismatch (steps 2-3) - -
wwwvs non-www looping = Site Address mismatch (step 2) - -Loop on
/wp-adminor/wp-loginonly = plugin or cookie issue (steps 1, 5)
1. Clear Browser Cache and Cookies
WordPress login and HTTPS upgrades both depend on cookies - a stale cookie can replay the loop forever. Test in an incognito window first: if the site loads, just clear cookies for your domain in normal browsing. Two minutes, and it rules out the client side entirely.
2. Match WordPress Address and Site Address
The #1 cause. In Settings > General, both "WordPress Address (URL)" and "Site Address (URL)" must be identical - same protocol, same www preference, all lowercase. If the error locks you out of wp-admin, override via wp-config.php (above the "stop editing" line):
define('WP_HOME', 'https://yourdomain.com');
define('WP_SITEURL', 'https://yourdomain.com');
Use the exact URL your site actually serves - including www if your site uses it. wp-config defines override the database values; for a permanent fix, update siteurl and home in the wp_options table via phpMyAdmin, then remove the defines.
3. Fix Cloudflare's SSL Mode
If the loop started the day you enabled Cloudflare, this is your fix. Flexible SSL makes visitors connect to Cloudflare over HTTPS while Cloudflare calls your origin over HTTP - WordPress sees HTTP and redirects to HTTPS, forever.
- 1.Cloudflare Dashboard > SSL/TLS > Overview > change Flexible to Full (Full Strict once a valid origin cert is installed).
- 2.Tell WordPress it is behind a proxy - add to wp-config.php:
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
}
That pairing resolves the large majority of Cloudflare redirect loops.
4. Reset .htaccess
A corrupted or hand-edited .htaccess accumulates redirect rules from plugins, migrations, and manual "force HTTPS" snippets that fight each other. Via FTP or file manager:
- 1.Download
.htaccessas a backup, then rename it to.htaccess_old - 2.Reload the site. Loop gone = a bad rule in the old file
- 3.Regenerate: wp-admin > Settings > Permalinks > Save Changes (no edits needed) - WordPress writes a clean default file
Classic loop-causing snippet: an HTTPS-force rule that checks %{HTTPS} off behind a proxy - the proxy terminates SSL, so the origin always sees HTTP and always redirects. Check %{HTTP:X-Forwarded-Proto} =http instead, or let your host/CDN handle it.
5. Deactivate Plugins (Start With Redirect/SSL/SEO)
Plugins that touch redirects are the usual suspects: Redirection, SSL-forcing plugins (Really Simple SSL), SEO plugins with redirect modules, caching plugins serving a cached redirect. If you can't reach wp-admin, rename wp-content/plugins to plugins_old via FTP - WordPress deactivates everything. Site loads? Rename back and reactivate one by one until the loop returns.
Note: a redirect plugin can also serve a loop from cache - after fixing the real cause, purge all caches (plugin + server + CDN) before concluding the fix failed.
6. Check Server-Level Redirects
Some managed hosts force HTTPS or www at the server level, above .htaccess. If your .htaccess also forces a different canonical form, they fight. Fix by picking one enforcement layer - ideally let the host handle HTTPS/www forcing and keep .htaccess clean. If nothing else worked, ask your host's support to check for server-level redirect rules.
Prevention Checklist
- VSet Site Address once, correctly, at install - never leave http when https is active
- VCloudflare on Full or Full Strict, never Flexible, with a real origin SSL cert
- VOne redirect authority: either the host, the CDN, or a plugin - never two
- VAfter migrations, update URLs in the database, not just in one layer
Loose-Ended Setup Causes These Errors
Redirect loops cluster on hosts where SSL, www forcing, and CDN defaults conflict. Bluehost ships free SSL with sane defaults and a visible error log - the two things that turn a 2-hour hunt into a 5-minute fix. From $3.99/mo.
Get Reliable HostingRelated: white screen of death fix - 500 internal server error - nameserver changes without downtime - SSL certificates explained.
What are you building?
Tell us about your project so we can match the perfect hosting plan.
Hosting Cost Calculator
See exactly how much you'll spend on hosting over time. Compare Bluehost vs popular alternatives and discover your potential savings.
Used to calculate transaction fees (Shopify charges 2% on sales)
Frequently Asked Questions
What causes ERR_TOO_MANY_REDIRECTS in WordPress?
An infinite redirect loop: the page bounces between two URLs forever until the browser gives up. Nearly always caused by mismatched WordPress/Site Address URLs, Cloudflare Flexible SSL, a corrupted .htaccess redirect rule, or a plugin (SEO, SSL, redirect, or caching) creating a conflicting redirect.
What is the fastest fix for too many redirects?
Clear browser cookies, then check Settings > General and make WordPress Address and Site Address identical (same https, same www/non-www, all lowercase). If locked out of wp-admin, define WP_HOME and WP_SITEURL in wp-config.php.
Why did it start right after enabling Cloudflare?
Cloudflare SSL mode is set to Flexible: visitors hit Cloudflare over HTTPS but Cloudflare calls your server over HTTP, so WordPress redirects back to HTTPS - forever. Change Cloudflare SSL/TLS mode from Flexible to Full (or Full Strict).
How do I fix it if I can't reach wp-admin?
Edit wp-config.php via FTP and add define('WP_HOME','https://yourdomain.com') and define('WP_SITEURL','https://yourdomain.com') before the 'stop editing' line. Then rename .htaccess to .htaccess_old and the plugins folder to plugins_old to isolate the cause.
Is ERR_TOO_MANY_REDIRECTS a hosting problem?
Rarely. It's almost always a configuration issue on your site. Server-level redirect rules (managed host HTTPS forcing) can contribute, which is why a host with sane defaults and a visible error log helps you diagnose it in minutes.
How do I find what the loop is bouncing between?
Open DevTools > Network, reload the page, and look at the 301/302 chain - the two alternating URLs reveal the cause: http vs https means SSL config, www vs non-www means URL settings, /wp-login loops mean plugin or cookie issues.
Ready to launch?
Get Bluehost from $3.99/month with a free domain, free SSL, and 30-day money-back guarantee.
Related Articles
Bluehost vs Competitors: The Technical Deep Dive
We ran 47 benchmarks over 90 days. Here's the raw data on why Bluehost dominates.
WordPress 403 Forbidden Error: 7 Fixes That Actually Work (2026)
403 means the server understood you but refuses to serve the page. Fix file permissions (755/644), regenerate .htaccess, kill security plugin blocks - in the right order.
Fix 502 Bad Gateway in WordPress (2026): Diagnose First, Then Fix
502 means the gateway got a bad response from your server - usually PHP timeouts, CDN issues, or overload. A 9-step diagnostic workflow from browser checks to server logs.
Fatal Error: Maximum Execution Time Exceeded - 6 Fixes (2026)
max_execution_time kills slow updates at 30-60s. Fix the culprit plugin/theme first, then raise the limit via wp-config, .htaccess or php.ini - with exact code.
HTTP Error Uploading Images in WordPress: 9 Fixes Ranked (2026)
The vague 'HTTP error' on image upload usually means memory limits or Imagick. Fix order: rename the file, bump memory, force GD library, check permissions - with code.
WordPress Missed Schedule Error: Why Posts Don't Publish (2026)
Missed Schedule means wp-cron didn't fire - it's triggered by visits, not real time. Fix with a real server cron, a trigger plugin, or the underlying cache/timezone issue.