Severity: Critical · Fix time: 5–15 min · Skill level: Intermediate
ERR_TOO_MANY_REDIRECTS is a browser error that appears when your site enters an infinite redirect loop — each URL redirect leads to another redirect, and the browser gives up after too many hops. In WordPress, this is almost always caused by a mismatch between WP_HOME and WP_SITEURL settings, an SSL/HTTPS misconfiguration, a corrupted .htaccess file, or a conflicting plugin.
From a visitor’s perspective, the page never loads — Chrome shows “ERR_TOO_MANY_REDIRECTS,” Firefox shows “The page isn’t redirecting properly,” and Safari shows “Too many redirects.” The entire site is inaccessible until the redirect chain is broken.
Need a quick map of every WordPress error? See our 70+ WordPress Errors Guide → for a categorized reference of every common WordPress issue.
[Image: Chrome browser showing the ERR_TOO_MANY_REDIRECTS error page with the explanation message]
How ERR_TOO_MANY_REDIRECTS Works
WordPress has two URL settings that must match: WordPress Address (URL) (WP_SITEURL) and Site Address (URL) (WP_HOME). When these don’t match — or when they conflict with the actual server configuration — WordPress creates an endless redirect cycle trying to send visitors to the “correct” URL.
A common example: the WordPress URL is set to https://yoursite.com but your SSL certificate isn’t properly installed. WordPress sends the browser to HTTPS. The server can’t complete the HTTPS handshake and redirects back to HTTP. WordPress immediately redirects back to HTTPS. The loop continues until the browser aborts.
Other common triggers include:
- HTTP to HTTPS migration with incorrect settings — Setting
WP_HOME/WP_SITEURLtohttps://while the SSL certificate isn’t active yet. - Cloudflare SSL set to “Flexible” — Cloudflare’s Flexible SSL mode sends HTTPS requests to your origin server via HTTP. If WordPress is also forcing HTTPS, the result is a redirect loop between Cloudflare and the origin.
- SSL plugin conflicts — Plugins like “Really Simple SSL” combined with server-level HTTPS enforcement can create duplicate redirect rules that bounce visitors endlessly.
- Corrupted .htaccess file — Manual edits or plugin-generated rules in
.htaccessthat create conflictingRewriteRuledirectives. - Domain change not fully updated — Migrating from one domain to another but leaving old domain references in
wp_optionsdatabase entries.
Check This First — 2-Minute Diagnostic
- Clear browser cache and cookies — A cached redirect from a previous misconfiguration can persist. Open an incognito window and try loading the site. If it loads in incognito, the issue is browser cache.
- Check if it affects all pages — If only one URL loops, it’s a specific redirect rule. If the entire site loops, it’s a URL setting or SSL conflict.
- Check recent changes — Did you recently install an SSL certificate, enable HTTPS, switch Cloudflare settings, or install an SSL plugin? These are the most common precursors to this error.
- Access wp-config.php — If you can access your hosting file manager or SFTP, you can fix the URL settings there even when the site is inaccessible.
- Temporarily disable CDN — If you use Cloudflare, pause it briefly to test whether the loop exists without the CDN. This quickly identifies CDN-related SSL conflicts.
Purpose & Benefits
1. URL Consistency Is Foundational to WordPress Function
The two URL settings in WordPress — WordPress Address and Site Address — control how every link on the site is built. Keeping them consistent and matched to your SSL configuration prevents redirect loops and a range of other issues including mixed content warnings and login problems.
2. Understanding SSL Layering Prevents Conflicts
Sites using Cloudflare or a CDN have an extra SSL layer to account for. Knowing how HTTPS is enforced at each layer — origin server, WordPress, and CDN — helps you configure them consistently and avoid the conflicting rules that create redirect loops. Our WordPress hosting services are configured with these layers aligned from day one.
3. Fast Resolution Limits Site Downtime
Because ERR_TOO_MANY_REDIRECTS makes the entire site inaccessible to every visitor and every search engine crawler, it qualifies as a site-down emergency. The fix path is predictable — clear browser cache, then correct WordPress URL settings — and most cases can be resolved in under 15 minutes when you know where to look.
Examples
1. Cloudflare SSL Set to Flexible Creates a Loop
A site owner enables Cloudflare on a WordPress site that has “Force HTTPS” enabled via the Really Simple SSL plugin. Cloudflare’s SSL is set to “Flexible,” meaning Cloudflare sends requests to the origin server over HTTP. The origin WordPress install immediately redirects HTTP back to HTTPS. Cloudflare receives the HTTPS response and forwards it to the origin over HTTP again — infinite loop. Fix: change Cloudflare’s SSL/TLS mode from Flexible to Full (Strict). The loop stops immediately.
2. WordPress URL Mismatch After Domain Migration
A site is migrated from http://oldsite.com to https://newsite.com. The migration tool updated most database entries but left WP_SITEURL and WP_HOME pointing to http://oldsite.com. WordPress redirects every visitor to the old domain, which no longer resolves. Fix: add the correct URL definitions to wp-config.php:
// Fix redirect loop caused by incorrect site URL settings
define('WP_HOME', 'https://newsite.com');
define('WP_SITEURL', 'https://newsite.com');These two lines override the database settings and restore site access immediately.
3. .htaccess Conflict After SSL Plugin Installation
Installing an SSL plugin adds HTTPS redirect rules to .htaccess. The hosting server also has a server-level HTTPS redirect. Two separate redirect rules pointing to the same HTTPS URL create a loop. Fix: rename the .htaccess file to .htaccess_disabled temporarily to bypass all .htaccess rules. When the site loads, go to Settings → Permalinks → Save Changes to generate a clean .htaccess, then remove the duplicate redirect rules.
Common Mistakes to Avoid
- Enabling Force HTTPS without a working SSL certificate — Setting WordPress or Cloudflare to force HTTPS when no valid certificate is installed creates an immediate redirect loop. Always verify your SSL certificate is active before enabling HTTPS redirects.
- Using multiple HTTPS enforcement methods simultaneously — Running an SSL plugin that forces HTTPS + a server-level
.htaccessredirect + Cloudflare’s force HTTPS feature creates conflicting rules. Pick one enforcement method and disable the others. - Not clearing cache after fixing the URLs — After correcting WordPress URL settings, clear your browser cache, any server-side cache, and any CDN cache. Cached redirects will continue looping even after the underlying fix is in place.
- Hardcoding URLs in wp-config.php permanently — Using
define('WP_HOME',...)inwp-config.phpis a great emergency fix, but it overrides the database settings permanently. After fixing the underlying cause, update the database values and remove thedefinestatements to avoid confusion.
Best Practices
1. Fix WordPress URL Settings via wp-config.php When Locked Out
When you can’t access wp-admin because of a redirect loop, connect via SFTP and add the correct URL definitions to wp-config.php before the “stop editing” line. Replace with your actual domain and protocol:
// Emergency fix for redirect loop — update and remove once site is accessible
define('WP_HOME', 'https://yourdomain.com');
define('WP_SITEURL', 'https://yourdomain.com');This immediately overrides whatever is in the database and stops the redirect loop. Once you can access wp-admin, go to Settings → General and confirm both URLs are correct, then remove these lines from wp-config.php.
2. Reset .htaccess to the Clean WordPress Default
A corrupted or over-extended .htaccess file is a common source of redirect loops. Via SFTP, rename your existing .htaccess to .htaccess_old, then create a new .htaccess with only the clean WordPress defaults:
# 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 WordPressIf the loop stops after replacing .htaccess, the old file had conflicting redirect rules.
3. Correct Cloudflare SSL Settings
If you use Cloudflare, go to SSL/TLS → Overview and set the encryption mode to Full or Full (Strict) — never Flexible. Flexible mode creates an HTTP loop between Cloudflare and any origin server that already forces HTTPS. “Full (Strict)” requires a valid SSL certificate on the origin and is the correct setting for a properly configured WordPress site.
Frequently Asked Questions
What causes ERR_TOO_MANY_REDIRECTS most often?
On WordPress sites, the most common cause is a conflict between the WordPress URL settings and the actual SSL/HTTPS configuration. This typically happens right after installing an SSL certificate, enabling HTTPS, or migrating to a new domain. The second most common cause is Cloudflare’s SSL mode being set to “Flexible” when the origin server already forces HTTPS.
How do I fix ERR_TOO_MANY_REDIRECTS when locked out of wp-admin?
You’ll need file system access. Connect via SFTP or your hosting file manager and add define('WP_HOME', 'https://yourdomain.com'); and define('WP_SITEURL', 'https://yourdomain.com'); to wp-config.php. Also rename .htaccess to .htaccess_old to eliminate any conflicting redirect rules. This combination resolves the majority of redirect loops.
Can ERR_TOO_MANY_REDIRECTS hurt my SEO?
Yes. During a redirect loop, your site is completely inaccessible to visitors and crawlers. If the loop persists for more than a day or two, rankings can drop temporarily. Fast resolution and a sitemap resubmission in Google Search Console limits the damage.
What is the difference between a redirect loop and a simple redirect?
A single redirect (like a 301 redirect from HTTP to HTTPS) is normal and beneficial for SEO. A redirect loop is when URL A redirects to URL B, which redirects back to URL A (or through a chain of URLs that eventually circles back). The browser detects the loop after following approximately 20 redirects and aborts with the ERR_TOO_MANY_REDIRECTS error.
Why did clearing cache fix it for some visitors but not others?
When a redirect loop existed, some browsers cached the redirect chain. Clearing cache and cookies forces a fresh request without following the cached chain. If clearing cache resolved the error for one visitor while others still saw it, the site configuration may have been corrected concurrently — or the cached redirect simply expired.
Related Glossary Terms
- SSL Certificate
- Mixed Content Warning
- 301 Redirect
- .htaccess
- HTTPS (Hypertext Transfer Protocol Secure)
- wp-config
- 500 Internal Server Error
- WordPress Login Redirect Loop
How CyberOptik Can Help
Still broken? Our team fixes WordPress errors like this in under 30 minutes for maintenance clients. Redirect loops are time-sensitive — every minute the site is inaccessible is a minute of lost traffic and potential SEO impact. We know exactly where to look: URL settings, .htaccess, Cloudflare configuration, and SSL layer conflicts. Our WordPress maintenance plans include proactive SSL monitoring and configuration management to prevent these situations. Contact us immediately if your site is in a redirect loop or explore our WordPress support services.
