WordPress Too Many Redirects: Fix ERR_TOO_MANY_REDIRECTS and Prevent It Forever

Your site is not just down — it is actively refusing to load. Every page, every link, even your wp-admin login is caught in an infinite redirect loop. And clearing your browser cookies will not fix it this time.

The error that locks you out of your own site

You try to visit your WordPress site and the browser shows you a stark message:

"This page isn't working. yoursite.com redirected you too many times. Try clearing your cookies. ERR_TOO_MANY_REDIRECTS."

You clear your cookies. Same error. You try a different browser. Same error. You try your phone. Same error. You try logging into wp-admin. Same error. You are completely locked out of your own website.

Your visitors are seeing the same thing. Every page on your site is broken. Google is crawling your site and hitting redirect loops — which it interprets as a serious technical failure. If the loop persists for more than a few hours, Google starts dropping your pages from the index. Rankings you spent months building can disappear in a day.

And the infuriating thing is, you probably did not change anything. Or you changed one small thing — installed an SSL plugin, updated a redirect plugin, switched your CDN settings — and now your entire site is unreachable.

What a redirect loop actually is

A redirect loop happens when URL A redirects to URL B, and URL B redirects back to URL A. Your browser follows the chain: A to B to A to B to A to B — until it gives up.

In WordPress, these redirects can come from multiple sources simultaneously: your .htaccess file, your WordPress settings, an SSL plugin, a redirect plugin, your hosting control panel, and your CDN. When two or more of these sources create conflicting redirect rules, you get a loop.

The browser typically follows up to 20 redirects before giving up and showing the ERR_TOO_MANY_REDIRECTS error. The entire process happens in milliseconds — your visitors see the error almost instantly.

The five causes of WordPress redirect loops

Every redirect loop in WordPress comes down to conflicting rules. Two or more systems are each trying to redirect the same URL, and they disagree on where it should go. Here are the five most common culprits.

1. SSL redirect stacking — the most common cause

This is the number one cause of redirect loops in WordPress, and it happens when multiple layers try to force HTTPS at the same time.

Here is a typical scenario. You install an SSL certificate. Your hosting provider automatically adds a redirect from HTTP to HTTPS in the server configuration. Then you install an SSL plugin like Really Simple SSL, which adds its own redirect. Then your .htaccess file also has a redirect rule from a previous attempt to force HTTPS. Now you have three layers all trying to redirect the same request.

In some configurations, one layer redirects to HTTPS, the next layer does not see the HTTPS and redirects again, the third layer redirects back — and you have a loop.

How to fix it: You need exactly one HTTPS redirect, not three. Connect via FTP and open your .htaccess file. Remove any manual HTTPS redirect rules (they typically contain RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}). Then deactivate your SSL plugin by renaming its folder in /wp-content/plugins/. Let your hosting provider's built-in HTTPS redirect handle it — this is the most reliable approach. If the site loads, reactivate your other plugins one by one.

2. WordPress Address vs Site Address mismatch

WordPress has two URL settings in Settings > General: "WordPress Address (URL)" and "Site Address (URL)." The WordPress Address is where your WordPress files live. The Site Address is where visitors access your site.

If these two values conflict — one uses https://www.yoursite.com and the other uses https://yoursite.com — WordPress redirects between them in an infinite loop. This also happens if one uses HTTP and the other uses HTTPS.

How to fix it: Since you cannot access wp-admin, you need to fix this in the database or in wp-config.php. Add these two lines to wp-config.phpabove the "That's all, stop editing" comment:

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

Make sure both values are identical and use the correct protocol (HTTP or HTTPS) and the correct www or non-www format. Save the file and reload your site.

3. Cloudflare Flexible SSL creating a loop

This is extremely common and extremely confusing. Cloudflare offers a "Flexible SSL" option that encrypts the connection between the visitor and Cloudflare, but sends an unencrypted HTTP request to your server. Your server sees an HTTP request and redirects to HTTPS. Cloudflare receives the HTTPS redirect, but its Flexible SSL mode sends the request to your server over HTTP again. Your server redirects to HTTPS again. Loop.

The Cloudflare documentation on redirect loops explains this in detail. The fix is straightforward.

How to fix it: In your Cloudflare dashboard, go to SSL/TLS and change the encryption mode from Flexible to Full or Full (Strict). Full mode means Cloudflare connects to your server over HTTPS, which matches the redirect your server is issuing. The loop breaks immediately.

If you do not have an SSL certificate on your origin server, install one first. Free certificates from Let's Encrypt work perfectly. Never use Flexible SSL as a permanent solution — it gives visitors a false sense of security because the connection between Cloudflare and your server is unencrypted.

4. Conflicting .htaccess redirect rules

Your .htaccess file is a collection of rules that Apache processes on every request. Over time, plugins add rules, you add rules manually, tutorials tell you to paste rules — and eventually you end up with conflicting redirects.

A common example: one rule redirects non-www to www, and another rule further down redirects www to non-www. Or one plugin adds a trailing-slash redirect that conflicts with another plugin's non-trailing-slash redirect.

How to fix it: Via FTP, rename .htaccess to .htaccess-backup. This removes all redirect rules at once. If the site loads, the problem is in your .htaccess file. Create a fresh .htaccess with only the default WordPress rules:

# 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

Then go to Settings > Permalinks in wp-admin and click Save without changing anything. This regenerates clean permalink rules.

5. Redirect plugin conflicts

Redirect plugins like Redirection, Safe Redirect Manager, or Yoast Premium's redirect manager can create loops if they contain circular rules — for example, redirecting /old-page to /new-page and /new-page back to /old-page. This also happens when a redirect plugin conflicts with rules in your .htaccess file or your hosting panel.

How to fix it: Deactivate all redirect plugins by renaming their folders in /wp-content/plugins/. If the loop breaks, reactivate them one by one to identify the culprit. Then review all redirect rules within that plugin for circular patterns. The WordPress common errors guide covers additional redirect debugging techniques.

The nuclear option: reset everything and rebuild

If none of the individual fixes work, take the scorched-earth approach:

  1. Rename .htaccess to .htaccess-backup via FTP
  2. Rename the /wp-content/plugins/ folder to /wp-content/plugins-backup/ — this deactivates all plugins
  3. Add WP_HOME and WP_SITEURL constants to wp-config.php with the correct URL
  4. If using Cloudflare, set SSL mode to Full
  5. Reload your site

If the site loads, you know the problem is in one of the things you just disabled. Rename plugins-backup back to plugins and reactivate them one by one from wp-admin. Recreate .htaccess by saving your permalink settings. This methodical approach always finds the culprit.

How Uptrue catches redirect loops automatically

The redirect loop is one of the few WordPress errors that is relatively easy to detect with standard HTTP monitoring — if your monitoring tool is configured correctly. Uptrue's HTTP monitoring follows the redirect chain and detects when a loop occurs.

Step 1: Set up an HTTP monitor

  1. Sign up at uptrue.io/signup (free plan available)
  2. Click Add Monitor from your dashboard
  3. Select HTTP/HTTPS as the monitor type
  4. Enter your WordPress site URL
  5. Set the expected status code to 200
  6. Set the check interval to 1 minute
  7. Configure alerts — Slack, email, or Microsoft Teams

When a redirect loop occurs, the HTTP monitor follows the redirects, detects the loop, and triggers an alert. You know about the problem within 60 seconds — before your visitors start bouncing, before Google starts deindexing.

Step 2: Add a keyword monitor for extra protection

  1. Add a Keyword monitor for the same URL
  2. Set the keyword to your site title or a phrase always present on your homepage
  3. Set check type to "Page must contain"
  4. Set interval to 1 minute

The keyword monitor catches cases where the redirect does not technically loop but lands on the wrong page — for example, if your homepage redirects to a parking page, a default server page, or a hosting error page. If your expected content is not there, you get alerted.

Step 3: Set up a public status page

If your site serves clients or customers, a public status page lets them check the current status without contacting you. When the redirect loop hits and your monitors trigger, the status page updates automatically.

Check your WordPress site health right now

Instant health score across uptime, SSL, DNS, security headers, and performance. Catch redirect issues and other vulnerabilities before they become outages.

Check Your Website Score

Preventing redirect loops permanently

Monitoring catches the loop fast. But these practices stop it from happening in the first place.

Use one HTTPS redirect method only

Choose one: your hosting provider, your .htaccessfile, or a plugin. Never all three. Your hosting provider's built-in HTTPS redirect is usually the most reliable choice because it runs before WordPress even loads.

Set Cloudflare SSL to Full or Full (Strict)

If you use Cloudflare, never use Flexible SSL. Always use Full or Full (Strict). This prevents the most common CDN-related redirect loop. Install a proper SSL certificate on your origin server — free Let's Encrypt certificates work perfectly.

Match your www preference everywhere

Decide whether your site uses www.yoursite.com or yoursite.com and make sure every system agrees: WordPress settings, DNS records, CDN settings, .htaccess, and your SSL certificate. Mixed preferences are the second most common cause of redirect loops after SSL stacking.

Audit your .htaccess regularly

Open your .htaccess file every few months and review the redirect rules. Remove anything you do not recognise. Remove duplicate rules. Make sure no two rules contradict each other. If you are not comfortable reading Apache rewrite rules, reset to the WordPress defaults and let plugins handle the rest.

Test redirect changes on staging first

Any change to SSL settings, CDN configuration, .htaccess, or redirect plugins should be tested on a staging environment first. A redirect loop takes your entire site offline instantly — there is no graceful degradation.

Stop finding out from your customers

Your WordPress site could be stuck in a redirect loop right now and you would not know.

The ERR_TOO_MANY_REDIRECTS error makes your entire site completely inaccessible. Every page. Your homepage, your contact form, your checkout, your login page. Everything. And it can happen from a single setting change in your CDN, a plugin update, or a hosting configuration change.

Uptrue monitors your site every 60 seconds and alerts you on Slack, email, or Teams the moment something goes wrong. HTTP monitoring detects redirect loops automatically. Keyword monitoring catches the edge cases where the redirect lands on the wrong page instead of looping.

Never discover redirect loops from your customers again.

Detect redirect loops before your visitors do

Free plan available. HTTP monitoring with redirect loop detection. AI-powered reports. No credit card required.

Frequently asked questions

What does ERR_TOO_MANY_REDIRECTS mean?

ERR_TOO_MANY_REDIRECTS means your browser detected a redirect loop — your site is redirecting to a URL that redirects back to the original URL, creating an infinite cycle. The browser gives up after a set number of redirects (usually 20) and shows this error. Your visitors cannot access any page on your site until the loop is broken.

Why does WordPress cause too many redirects?

The most common causes are: an SSL plugin redirecting HTTP to HTTPS while your .htaccess file or hosting panel does the same (double redirect), a mismatch between WordPress Address and Site Address in Settings, a CDN like Cloudflare set to Flexible SSL creating a redirect loop with your server, and conflicting redirect rules in .htaccess from multiple plugins. Each of these creates a situation where URL A redirects to URL B, which redirects back to URL A.

Can I fix the redirect loop without access to wp-admin?

Yes. The redirect loop usually prevents you from logging into wp-admin because the login page itself is caught in the loop. You need to fix it via FTP or your hosting file manager. The most effective approach is to rename .htaccess to .htaccess-backup (which removes all redirect rules), then deactivate plugins by renaming the /wp-content/plugins/ folder. Once the site loads, you can reactivate plugins one by one to find the culprit.

Can uptime monitoring detect a redirect loop?

Yes, if your monitoring tool follows redirects and detects loops. Uptrue HTTP monitoring follows the redirect chain and alerts you when it detects a loop or when the number of redirects exceeds the expected count. This catches redirect loops automatically — often within 60 seconds of the problem starting — so you know about it before your visitors report it.