How to fix too many redirects errors

By Angus Published 26 March 2025 Updated 24 February 2026 5 min read

The “Too Many Redirects” or ERR_TOO_MANY_REDIRECTS error appears when your site gets stuck in an infinite redirect loop. Pages refuse to load because conflicting rules keep bouncing requests back and forth between different versions of your domain.

Redirect loops typically occur between HTTP and HTTPS versions of your site, or between www and non-www addresses. You will fix this by identifying and removing the conflicting redirect rules.

Before you begin

  • You need access to your site files via FTP or your hosting control panel’s file manager.
  • We recommend creating a backup of your .htaccess file before making changes.

Check for redirect loops in the .htaccess file

Incorrect rewrite rules in your .htaccess file are the most common cause of redirect loops. These rules control how your server handles incoming requests, and poorly written conditions can match both the source and destination of a redirect.

  1. Access your site files.
    Connect via FTP or open the File Manager in your hosting control panel. Navigate to your site’s root directory, typically named public_html or www.
  2. Locate the .htaccess file.
    This file sits in your site’s root directory. If you cannot see it, enable Show Hidden Files in your file manager settings. Files beginning with a dot are hidden by default.
  3. Review redirect rules.
    Open the .htaccess file and look for RewriteRule and RewriteCond directives. Check whether any conditions match both the source and destination domains.
  4. Test by disabling the file.
    Rename .htaccess to .htaccess.disabled and reload your site. If the redirect loop stops, the problem lies within that file.

Here is an example of a rule that creates a redirect loop:

RewriteCond "%{HTTP_HOST}" "domain.com$"
RewriteRule ".*" "https://my.domain.com/" [L,R=301]

This condition matches both domain.com and my.domain.com because both contain “domain.com”. The rule redirects every request to my.domain.com, including requests already on my.domain.com, creating an infinite loop.

Replace it with a more precise condition that only redirects when the request is not already on the destination domain:

RewriteCond %{HTTP_HOST} !^my\.domain\.com [NC]
RewriteRule ^(.*)$ https://my.domain.com/$1 [R=301,L]

This rule checks whether the request is not for my.domain.com before applying the redirect. The loop stops because requests already on the correct domain skip the redirect entirely. If you run WordPress, make sure you configure HTTPS correctly to avoid conflicts between WordPress settings and server-level redirects.

Look for mixed content redirects

Mixed content occurs when an HTTPS site attempts to load resources over HTTP. Browsers may automatically correct these requests or trigger redirects, particularly when additional HTTPS rules are active. This creates a loop between HTTP and HTTPS versions of your site.

  1. Disable HTTPS enforcement temporarily.
    Turn off any HTTPS redirection rules in your .htaccess file or hosting control panel. This isolates whether mixed content is causing the loop.
  2. Check your database URLs.
    Confirm that all URLs in your database, theme files and CMS settings use HTTPS consistently. Mixed protocols in stored URLs trigger redirect conflicts.
  3. Scan for mixed content.
    Use Why No Padlock to identify HTTP resources loading on HTTPS pages. The tool highlights images, scripts and stylesheets that need updating.
  4. Re-enable HTTPS redirection.
    Once all URLs use HTTPS, turn your redirect rules back on. Your site now loads securely without triggering loops.

You can verify your SSL configuration using SSL Server Test, which checks for common SSL implementation problems.

Review CMS settings that force HTTPS

Content management systems like WordPress and Joomla include built-in options to force HTTPS. When you enable HTTPS enforcement in both your CMS and your server configuration, these methods conflict and create redirect loops.

  1. Check your CMS HTTPS settings.
    Log in to your CMS admin panel and look for SSL or HTTPS options. In WordPress, these appear under Settings → General as the site URL fields.
  2. Disable CMS-level HTTPS enforcement.
    Turn off any HTTPS forcing options in your CMS temporarily. This lets you test whether server-level redirects work correctly on their own.
  3. Review hosting control panel redirects.
    Check cPanel or your hosting control panel for any redirect rules configured there. Multiple redirect sources often conflict with each other.
  4. Choose one redirect method.
    Use either CMS-level HTTPS enforcement or server-level redirects, not both. Server-level redirects in .htaccess typically perform better and apply site-wide.

If you encounter other error codes alongside redirect problems, read our guide on troubleshooting website errors for broader diagnostics. WordPress users can also check the WordPress FAQs for common redirect issues and solutions.

Wrapping up

Your site now loads without redirect loops. You identified conflicting redirect rules in your .htaccess file, resolved mixed content issues and removed duplicate HTTPS enforcement from your CMS settings. Visitors can access your pages normally again.

Monitor your site over the next few days to confirm the fix holds. Check that all pages load correctly and no new redirect errors appear. Our web hosting includes tools to help you manage redirects and SSL configuration.

If you run into any trouble, get in touch and our team will be happy to help.

Ready to get started?

Launch your website with our reliable cPanel hosting with unlimited bandwidth and expert support.

Get cPanel Hosting

Need a domain?

Find and register the perfect domain name for your website.

Search Domains