WordPress websites and business systems

How to Fix ERR_TOO_MANY_REDIRECTS in WordPress

What causes the WordPress "redirected you too many times" error and how to break the loop, from URL settings to Cloudflare SSL.

Chris Eggleston
Chris Eggleston WP Mantis
Updated August 31, 2026 /  

ERR_TOO_MANY_REDIRECTS, or “This page isn’t working: redirected you too many times”, means your site is stuck in a loop. One rule sends visitors to address A, another sends them back to address B, and the browser gives up.

On WordPress, the cause is usually a mismatch between HTTP and HTTPS, or between www and non-www. That often shows up right after installing SSL, moving the site, or turning on Cloudflare.

Start here: clear cookies and cache

Browsers remember redirects and cookies. If the loop has already been fixed, your browser might still be replaying it.

  1. Open the site in a private or incognito window. If it loads there, clear cookies and cached files for that site in your normal browser.
  2. If you use a caching plugin, server cache or a CDN, clear them too. A cached redirect can keep a loop alive after the cause is gone. Our guide to clearing WordPress cache covers each layer.

If the private window shows the same error, the loop is real. Work through the causes below.

See where the loop goes

It helps to see the actual redirects. In Chrome, open DevTools with F12, go to the Network tab, tick Preserve log, and load the page. You will see the same URLs bouncing back and forth, usually something like http:// to https:// and back.

If you are comfortable with a terminal, this shows the same chain:

curl -sIL https://example.com | grep -iE "^(HTTP|location)"

Knowing which two addresses are fighting tells you which cause below to look at.

1. WordPress Address and Site Address don’t match

WordPress stores two URLs: the WordPress Address (URL) and the Site Address (URL). In the database they are the siteurl and home options. If they say http:// while your server forces https://, or they say www while your host redirects to non-www, you get a loop.

If you can reach the dashboard

Go to Settings → General and make both addresses match exactly what you want your site to use, including https:// and whether or not it has www. Save, then test in a private window.

If you can’t reach the dashboard

Edit wp-config.php in your site’s root folder over FTP or your host’s file manager. Add these two lines above the line that says /* That's all, stop editing! */, using your real address:

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

These override the database values. Once the site works, you can update Settings → General to the same values and remove the two lines, or leave them in place. While they are there, the fields in Settings → General are greyed out.

You can also change siteurl and home directly in the wp_options table in phpMyAdmin. Your table prefix might not be wp_, so check $table_prefix in wp-config.php.

2. Cloudflare Flexible SSL

This is one of the most common causes we see. With Cloudflare’s SSL mode set to Flexible, visitors connect to Cloudflare over HTTPS, but Cloudflare connects to your server over plain HTTP. WordPress, or your server, sees an HTTP request and redirects to HTTPS. Cloudflare passes that back as HTTP again, and the loop starts.

The fix:

  1. Make sure your server has a valid SSL certificate. Most hosts provide a free one. See our guide to adding SSL to WordPress if it doesn’t.
  2. In Cloudflare, select your domain, go to SSL/TLS → Overview, and change the encryption mode to Full (strict).
  3. Wait a minute, clear your browser cookies and cache, and test again.

Avoid Flexible mode on WordPress. Even when it doesn’t loop, the connection between Cloudflare and your server is unencrypted.

Behind a proxy or load balancer

Some setups, including certain hosts and reverse proxies, terminate SSL before the request reaches WordPress. WordPress then can’t tell the visitor used HTTPS. If the proxy passes on the X-Forwarded-Proto header, you can tell WordPress about it by adding this to wp-config.php, above the “stop editing” line:

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

Only add this if your site really sits behind a proxy that sets that header. Check with your host if you’re not sure.

3. A redirect or SSL plugin

Plugins that handle redirects or force HTTPS, such as Redirection, SSL plugins, SEO plugins with redirect features, and some security plugins, can create a loop. This is especially likely if your host or Cloudflare is also forcing HTTPS, so two systems are doing the same job.

To test, disable all plugins without the dashboard:

  1. Connect with FTP or your host’s file manager and open wp-content.
  2. Rename the plugins folder to plugins-off.
  3. Load the site. If the loop is gone, a plugin caused it.
  4. Log in and open Plugins → Installed Plugins. WordPress will report that the plugins are missing and deactivate them.
  5. Rename the folder back to plugins, then reactivate the plugins one at a time, testing after each, until the loop returns.

Our guide to troubleshooting plugin conflicts covers this process in more detail. Once you find the plugin, check its redirect rules, or turn off its HTTPS forcing if your server already handles it.

4. Rules in .htaccess

On Apache and LiteSpeed servers, redirect rules often live in the .htaccess file in your site’s root folder. A rule that forces HTTPS or www can conflict with your WordPress URLs or with a rule added by a plugin or host.

Download a copy of .htaccess as a backup, then replace its contents with the standard WordPress rules:

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

If the loop stops, one of the removed rules caused it. Add your HTTPS or www rule back carefully, making sure it agrees with the URLs in Settings → General.

If your server runs Nginx, there is no .htaccess. Redirects are set in the server configuration, usually through your host’s control panel or support team.

If only wp-admin loops

If the front end works but logging in sends you back to the login page over and over, it’s usually cookies. Clear cookies for the site, and check that both addresses in Settings → General use the same domain and protocol. A cookie set for www.example.com won’t work on example.com.

Keep it from happening again

Decide on one version of your address, such as https://example.com, and enforce it in one place only: your host, your server rules, or a plugin, not all three. Before changing SSL settings or Cloudflare, take a backup so you can roll back.

Need it fixed now?

If your site is stuck in a redirect loop and visitors can’t reach it, our $79 one-time fix will find which rules are fighting and get it loading again. It’s fixed or your money back, usually within 24 hours.

Chris Eggleston
Chris Eggleston
Husband. Father to 4. Grandpa to 2. Gravity Forms enthusiast. As the owner of WP Mantis, I’m on a mission to simplify the WordPress experience for site owners. I also try to bring a unique perspective to the Gravity Forms community at gravityranger.com.
Next step Not sure what your site needs next?

We will look at it properly and tell you the five things worth doing, in order, whether or not you hire us.

Affiliate links disclaimer