Redirect HTTP to HTTPS in Apache
If your web server is running Apache, you can easily redirect all of your HTTP traffic to HTTPS by adding the following code to your .htaccess file. This is the recommended method for redirecting WordPress running on Apache.
Perhaps you simply have too many HTTPS redirects. You can easily check your site to see how many redirects it’s using with Patrick Sexton’s Redirect mapper tool. Here is an example below of redirects that are not set up correctly which are easily spottable using the redirect mapper. You can see that there are duplicate HTTPS redirects happening on both the www and non-www versions.
Check Third-Party Services
ERR_TOO_MANY_REDIRECTS is also often commonly caused by reverse-proxy services such as Cloudflare. This usually happens when their Flexible SSL option is enabled and you already have an SSL certificate installed with your WordPress host. Why? Because, when flexible is selected, all requests to your hosting server are sent over HTTP. Your host server most likely already has a redirect in place from HTTP to HTTPS, and therefore a redirect loop occurs.
To fix this you need to change the Cloudflare Crypto settings chatspin profile from Flexible to either Full or Full (strict). If you’re a Kinsta client, make sure to also check out our steps on how to install an SSL certificate while using Cloudflare.
You can use their Always Use HTTPS page rule to redirect all users to HTTPS without creating a loop. Another thing to watch out for with Cloudflare is their forwarding URL redirection rules. Be careful not to create a redirect where the domain points to itself as a destination. This can cause an infinite redirect error, and the affected URLs will not be able to resolve.
If you’re using StackPath, they have an option called “Origin Pull Protocol” that needs to be set to HTTPS only.
Using Cloudflare DNS Only
If you only want to use Cloudflare’s DNS, and not their proxy/WAF service, then you should make sure your DNS records are set to “DNS Only.” The clouds will appear as “grey” instead of “orange.” You configure this under the “DNS” tab in the Cloudflare control panel.
Check Your WordPress Site Settings
Another thing to check is your WordPress site settings. There are two different fields you’ll want to ensure are set correctly, and not pointing at a wrong domain or are mismatched. Another common mistake is that you’re not using the correct prefix to match the rest of your site, www or non- Sometimes people migrate hosts, or change domains and these can get changed without you realizing it.
- WordPress Address (URL): The address to reach your blog.
- Site Address (URL): The address of your WordPress core files.
Most likely though you aren’t able to access your WordPress dashboard. So what you can do is override the settings above by inputting the values in your wp-config.php file.
The wp-config.php file is typically located at the root of your WordPress site and can be accessed via FTP, SSH, or WP-CLI. To hard-code WP_HOME and WP_SITEURL, simply input the following code towards the top of the file, changing the values to reflect your domain.
Or if you prefer, here are two additional ways you could change your WordPress URLs without access to your admin dashboard:
- Change WordPress URL Directly in Database
- Change WordPress URL With WP-CLI
Once you manually set it, you can browse to your site to verify whether or not it fixes the redirect loop.
If you’re changing domains on a multisite, make sure to also check the wp_blogs table. We’ve seen people do a search and replace wrong and cause an infinite redirect loop. This is because the network site doesn’t match the subsites.