Technical

Fix ERR_TOO_MANY_REDIRECTS in WordPress (2026): The 6 Real Causes

By Daniel Reyes•October 4, 2026•5 min read

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.

Our top pick for most WordPress sites
Bluehost: free domain, free SSL, 24/7 support, 30-day money-back guarantee.
Check Bluehost Deal →

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:

  • -http vs https versions looping = SSL/proxy mismatch (steps 2-3)
  • -www vs non-www looping = Site Address mismatch (step 2)
  • -Loop on /wp-admin or /wp-login only = 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. 1.Cloudflare Dashboard > SSL/TLS > Overview > change Flexible to Full (Full Strict once a valid origin cert is installed).
  2. 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. 1.Download .htaccess as a backup, then rename it to .htaccess_old
  2. 2.Reload the site. Loop gone = a bad rule in the old file
  3. 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 Hosting

Related: white screen of death fix - 500 internal server error - nameserver changes without downtime - SSL certificates explained.

Find Your Perfect Hosting Plan

What are you building?

Tell us about your project so we can match the perfect hosting plan.

Question 1 of 425% complete
Interactive Tool

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)

Shopify Basic (3yr)
$1,044
Bluehost (3yr)
$444
You Save
$600
58% less than Shopify Basic

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.

Start for $3.99 →

Related Articles