🎉 Free WordPress fix for our first 50 sites — in exchange for an honest review. Claim a spot →

Errors

WordPress ERR_TOO_MANY_REDIRECTS: Every Cause Fixed

Jul 5, 2026 · 7 min read · By the Mend engineering team

ERR_TOO_MANY_REDIRECTS means WordPress is sending your browser around in a loop — URL A redirects to URL B, which redirects back to A, and the browser gives up after about 20 hops. The fix depends entirely on why the loop started, and there are six or seven distinct causes on WordPress sites. Work through them in order below and you'll almost always land on the culprit within ten minutes.

What You're Seeing

The browser error looks slightly different across browsers — Chrome says ERR_TOO_MANY_REDIRECTS, Firefox says The page isn't redirecting properly, Safari says too many redirects occurred — but they all mean the same thing. The site is unreachable. Sometimes the loop hits the whole site; sometimes it's only the admin area, only the home page, or only after a specific action like activating a plugin or switching to HTTPS.

Whatever triggered it, the cause lives in one of these places: your SSL/HTTPS configuration, your WordPress URL settings, your .htaccess file, a plugin or theme, your server-level redirects, or a bad cookie in your browser. Let's go through them.

Before You Start: Two Quick Housekeeping Steps

  1. Clear your browser cache and cookies — open the site in an Incognito/Private window first. A stale redirect can be cached in the browser and persist even after you've fixed the real problem on the server.
  2. Take a backup — you're about to edit configuration files. If your host has an automated backup, confirm it's recent. If not, take one now via your host's control panel before touching anything.

Cause 1: Misconfigured SSL / HTTPS Loop

This is the single most common cause. It typically appears after you install an SSL certificate or migrate to HTTPS. What happens: your server (or a Cloudflare/CDN setting) forces HTTPS, but WordPress is still configured to serve http:// URLs — so it gets redirected to HTTPS, tries to load HTTP, gets redirected again, and loops forever.

Fix A — Check your WordPress URL settings

Log in to Settings → General (if you can reach the admin). Both WordPress Address (URL) and Site Address (URL) should start with https://. If either still says http://, update it, save, and test. That one change fixes the loop in many cases.

If you're locked out of the admin entirely, you can set these values directly in wp-config.php. Open it via FTP or your host's file manager and add these two lines above the /* That's all, stop editing! */ comment:

define('WP_HOME', 'https://yourdomain.com');
define('WP_SITEURL', 'https://yourdomain.com');

Fix B — Check your SSL/HTTPS plugin settings

If you're using a plugin like Really Simple SSL, check whether it's forcing HTTPS at the plugin level while your server is already doing it — or vice versa. A double-redirect from two sources forcing HTTPS simultaneously is a classic loop. Temporarily deactivate the plugin (see Cause 3 below for how to do that without admin access) and see if the loop stops.

Fix C — Check for a reverse-proxy header issue

If your site sits behind Cloudflare, a load balancer, or any reverse proxy, WordPress may not detect that the incoming connection is already HTTPS. The fix is to add this to wp-config.php:

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
    $_SERVER['HTTPS'] = 'on';
}

Add it right after the opening <?php tag. This tells WordPress the connection is secure without the server needing to do an extra redirect.

Cause 2: Bad .htaccess Rules

A corrupt or over-eager .htaccess file is the second-most-common culprit — especially after a migration, a security plugin change, or a manual edit. Conflicting redirect rules can easily create a loop.

Connect via FTP or your host's file manager. In your WordPress root, rename .htaccess to .htaccess.bak (this disables it without deleting it). Then visit your site. If the loop is gone, the file was the problem.

Go to Settings → Permalinks and click Save Changes — this regenerates a clean, default .htaccess. If you had custom redirect rules in the old file, add them back one at a time, testing after each, until you find the one that causes the loop.

The default WordPress .htaccess block should look like this and nothing more (for Apache):

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Cause 3: A Plugin or Theme Creating the Loop

Redirect plugins, caching plugins, security plugins, and poorly coded themes can all inject redirects that conflict with each other or with your server config.

To rule this out without admin access, connect via FTP and rename the /wp-content/plugins/ folder to something like /wp-content/plugins-disabled/. WordPress will deactivate every plugin at once. If the loop stops, a plugin is responsible. Rename the folder back, then deactivate plugins one by one from the admin to find the offender.

If you suspect a theme, switch to a default WordPress theme (Twenty Twenty-Four, for example) the same way — rename your active theme folder in /wp-content/themes/ and WordPress will fall back to the next available theme.

Common plugin offenders: caching plugins with HTTPS redirect rules, security plugins with forced-redirect settings, SEO plugins with canonical redirect misconfiguration, and any plugin that hooks into wp_redirect.

Cause 4: Cloudflare (or CDN) Redirect Conflict

If you're using Cloudflare, check two things in your Cloudflare dashboard:

  • SSL/TLS mode: If it's set to Flexible, Cloudflare connects to your origin server over HTTP — but if your server is also redirecting HTTP → HTTPS, you get a loop. Change Cloudflare's SSL mode to Full or Full (Strict).
  • Page Rules / Redirect Rules: Check whether any Cloudflare page rule is redirecting a URL that WordPress is also redirecting. Remove duplicates.

Cloudflare's Flexible SSL setting causes more WordPress redirect loops than almost anything else. It's a very common post-migration surprise.

Cause 5: Wrong Site URL in the Database

After a migration or a botched search-and-replace, the siteurl and home values in the wp_options table can point to the wrong domain or protocol. If your wp-config.php defines a different URL than what's in the database, you can get a redirect loop.

Check via phpMyAdmin (available in most hosts' control panels): open your database, find the wp_options table, and look at the rows where option_name is siteurl and home. Both should match your intended domain with the correct protocol. You can edit them directly by clicking the value.

Alternatively, use WP-CLI if your host supports it:

wp option get siteurl
wp option get home
wp option update siteurl https://yourdomain.com
wp option update home https://yourdomain.com

Cause 6: Server-Level Redirect Rules (Nginx / Apache vhost)

If you or your host have added redirect rules directly in the Nginx server block or Apache virtual host configuration — not just in .htaccess — those can conflict with WordPress's own redirects. This is more common on VPS or dedicated servers where you have direct control over the web server config.

Look for rewrite or return 301 directives in your Nginx config, or Redirect / RewriteRule directives in your Apache vhost block. A rule that sends all HTTP traffic to HTTPS will loop if WordPress is trying to do the same thing at the application level. Keep the redirect in only one place — ideally the server level — and remove it from WordPress plugins and .htaccess.

How to Prevent This in Future

  • Before migrating or switching to HTTPS, use a staging site to test the full redirect chain. Our post on setting up a WordPress staging site walks through a safe workflow.
  • Update both WordPress URL fields (Settings → General) the moment you enable HTTPS — don't rely solely on a plugin to handle it.
  • Use only one layer of redirect enforcement. Pick the server level or the WordPress/plugin level — not both.
  • After any migration, run a redirect-chain checker (tools like Redirect Checker or httpstatus.io are free) to catch loops before users do.
  • Keep a recent backup. A managed care plan with automated daily backups means you always have a clean restore point if a change causes a loop.

When to Call a Professional

If you've worked through every step above and the loop persists — or if the site is a live WooCommerce store, a membership site, or anything generating revenue — this is a good time to get a second set of expert eyes on it. Redirect loops that survive the standard fixes usually have a less obvious cause: conflicting server blocks, a CDN misconfiguration, a plugin writing bad rules to the database, or stacked redirect rules across multiple layers.

Mend's Quick Fix is a flat-rate service where a senior engineer diagnoses the exact cause, fixes it — usually the same day — and sends you a plain-English report of what was wrong and what changed. If you're not sure what's causing it, start with a free diagnosis; no payment, no card required, and we'll tell you exactly what we find before doing any work.


A redirect loop is almost always fixable in under an hour once you know where to look. SSL configuration and Cloudflare's Flexible SSL mode account for the majority of cases. Work through the causes in the order above — SSL settings first, then .htaccess, then plugins — and you'll find it.

Frequently asked questions

Will clearing my browser cache fix ERR_TOO_MANY_REDIRECTS?

It can fix it if the redirect was temporary and has already been resolved server-side, but a cached redirect is rarely the root cause. Always clear cache and test in Incognito first, but if the loop persists in a fresh browser session, the problem is on the server or in WordPress configuration.

My whole site is in a redirect loop and I can't access the admin — what do I do first?

Connect via FTP or your host's file manager and open wp-config.php. Add the WP_HOME and WP_SITEURL constants with your correct https:// URL. That alone fixes the most common cause. If it doesn't, rename the plugins folder to disable all plugins at once and try loading the site again.

Does Cloudflare cause ERR_TOO_MANY_REDIRECTS?

Yes — Cloudflare's Flexible SSL mode is one of the most common causes. It connects to your origin over HTTP, which conflicts with any server-level or WordPress-level HTTP-to-HTTPS redirect. Changing Cloudflare's SSL/TLS setting to Full or Full (Strict) resolves it in most cases.

Can a plugin really cause a redirect loop even if I didn't change any settings?

Yes. If a plugin update changes how it handles redirects — or if two plugins both enforce HTTPS or canonical URLs — they can start conflicting without any action on your part. Deactivating all plugins at once (by renaming the plugins folder via FTP) quickly confirms whether a plugin is responsible.