Redirecting all variants of your domain to https Version

Assuming that I have a domain example.com I would like to redirect all the variations of this domain to the https version.

There can be six variations
example.com, www.example.com, http://example.com, http://www.example.com, https://example.com, https://www.example.com.

I want to make sure that all these variations redirect to https://www.example.com.

example.com is the naked version of your domain www.example.com. Goto your domain provider and add A name pointing to IP of your server.

Add A name

Add a C Name to point www version also to the same IP.

Add a C Name

Assuming you are running Apache(There will be similar settings in all servers) goto your virtual host and make sure add both Servername and ServerAlias

<VirtualHost *:80> 
ServerName example.com
ServerAlias www.example.com

This will make sure that your server listens both the naked domain and normal domains and points them to you code folder for execution.

Now go to your .htaccess file

Make sure that you have following code.

RewriteEngine on

# Set “protossl” to “s” if we were accessed via https://. This is used later
# if you enable “www.” stripping or enforcement, in order to ensure that
# you don’t bounce between http and https.
RewriteRule ^ — [E=protossl]
RewriteCond %{HTTPS} on
RewriteRule ^ — [E=protossl:s]

This code just sets a flag called protossl to if you have visited using https. This will ensure that you don’t go into infinite redirections between http and https as mentioned in the comments.

Comment out all other settings related to http and https redirection. Then add the following

 #
# Rewrite http(s)://example.com to https://www.example.com
#
RewriteCond “%{HTTP_HOST}” “!^www\.” [NC]
RewriteCond “%{HTTP_HOST}” “!^$”
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

#
# Rewrite http://www.example.com to https://www.example.com
#
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

This code was provided by https://www.drupal.org/u/mdrescher on 
https://www.drupal.org/forum/support/post-installation/2018-04-15/forcing-to-https#comment-12723535 Check out his comments on why you need two different rules.

These changes will make sure that all six variations example.com, www.example.com, http://example.com, http://www.example.com, https://example.com, https://www.example.com are redirecting to https://www.example.com

Hope it will save time for somebody who is moving to https. https is good for overall internet. Do take out sometime this weekend to move your sites to https.

Posted by Web Monkey