Force your site to load SSL secure with an .htaccess file

Force your site to load SSL secure with an .htaccess file

 

Force your site to load SSL secure with an .htaccess file

After you have added an SSL certificate to your domain, DreamHost automatically redirects the URL visitors use to view your site from HTTP to HTTPS. The S ensures that your connection is encrypted. For example:

  • https://example.com

There’s nothing on your end you must update in order to force your site to use the secure URL. However, in some special cases, it may be necessary for you to create your own custom configuration file to force the redirect from HTTP to HTTPS.

Adding custom code is only necessary if your website requires specific code to force the redirect. If so, you will need to first disable the automatic redirect in your panel.

  • Disabling the automatic redirect to HTTPS

Once disabled, you can then proceed with adding your custom .htaccess file.

This page lists examples of how to do this depending on how your site is hosted. View either of the following articles for instructions on how to create/edit an .htaccess file on your server.

  • Creating and editing a file via FTP
  • Creating and editing a file via SSH

Where should the .htaccess file be created?

The .htaccess file should be located in your website’s primary directory. Change username to your Shell user and example.com to your website. For example:

/home/username/example.com

You can also confirm your site’s web directory in the panel.

  1. Navigate to the Manage Domains page.
  2. Click the Edit link to the right of your domain under the Web Hosting column.
  3. Here you’ll see your site’s web directory.

Please note that your FTP client must be configured to show hidden files. If not, you will not see the .htaccess file. View the following article for details on how to view hidden files:

 

What to change in the examples below?

The examples below can be entered into your .htaccess file exactly as shown.

Only if the example contains a URL in bold should you change that to your actual URL. For example, if you see the domain example.com, change this to your own domain name.

Forcing the domain to serve securely using HTTPS (for any site)

The following forces any http request to be rewritten using https. For example, the following code forces a request to http://example.com to load https://example.com. It also forces directly linked resources (images, css, etc.) to use https:

RewriteEngineOn
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}[L,R=301,NE] 
Header always set Content-Security-Policy "upgrade-insecure-requests;"

If this isn’t working for you, first check your line endings. Copy/paste from your web browser into a text editor may not work right, so after pasting into your text editor you should delete each line break and add it back in (line break = return key).

Forcing HTTPS with WordPress

If your .htaccess file already contains some default WordPress code, enter the following above or below that code. Never enter code inside of the comment tags that start and end with:

# BEGIN WordPress

# END WordPress

It’s possible for a visitor to enter in a direct HTTP URL on your WordPress site, even when an SSL certificate is active. To force any HTTP request to redirect to HTTPS, you can add code to your WordPress .htaccess file. There are two code options below for you to use. The first should work as shown, but if not, try option two instead.

Option #1

RewriteEngineOn
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}[L,R=301,NE] 
Header always set Content-Security-Policy "upgrade-insecure-requests;"

Full example including the default WordPress code

Below is what your .htaccess file looks like with both the new HTTPS code and existing WordPress code.

RewriteEngineOn
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}[L,R=301,NE] 
Header always set Content-Security-Policy "upgrade-insecure-requests;"

# BEGIN WordPress
# The directives (lines) between `BEGIN WordPress` and `END WordPress` are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngineOn
RewriteBase
 /
RewriteRule ^index\.php$ -[L] 
RewriteCond%{REQUEST_FILENAME}
 !-f
RewriteCond%{REQUEST_FILENAME}
 !-d
RewriteRule . /index.php[L] 
</IfModule>
# END WordPress

Option #2

In this example, make sure to change example.com to your actual domain name.

RewriteEngineOn
RewriteCond%{SERVER_PORT}
 80 
RewriteRule ^(.*)$ https://www.example.com/$1[R=301,L,NE] 
Header always set Content-Security-Policy "upgrade-insecure-requests;"

Full example including the default WordPress code

Below is what your .htaccess file looks like with both the new HTTPS code and existing WordPress code.

RewriteEngineOn
RewriteCond%{SERVER_PORT}
 80 
RewriteRule ^(.*)$ https://www.example.com/$1[R=301,L,NE] 
Header always set Content-Security-Policy "upgrade-insecure-requests;"

# BEGIN WordPress
# The directives (lines) between `BEGIN WordPress` and `END WordPress` are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngineOn
RewriteBase
 /
RewriteRule ^index\.php$ -[L] 
RewriteCond%{REQUEST_FILENAME}
 !-f
RewriteCond%{REQUEST_FILENAME}
 !-d
RewriteRule . /index.php[L] 
</IfModule>
# END WordPress

Forcing HTTPS with DreamPress

It’s possible for a visitor to enter in a direct HTTP URL on your DreamPress site. To force any HTTP request to redirect to HTTPS, add the following to your WordPress .htaccess file:

RewriteEngineOn
RewriteCond%{HTTP:X-Forwarded-Proto}
 !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}[L,R=301,NE] 
Header always set Content-Security-Policy "upgrade-insecure-requests;"

Troubleshooting

WordPress

This can also be an issue with WordPress as it requires URLs in the database to either use or or not use ‘www’ in order to operate correctly. View the following article for further details:

Infinite redirect error

View the following article if you’re seeing your site redirect in a loop after making these changes,.

Resolving mixed content warnings

Even when your site is correctly redirecting to the secure URL, it’s possible the browser will still throw a warning indicating that some resources such as links are pointed to the non-secure version. You can add additional code to your .htaccess file to resolves those warnings. View the following article for details.

Be the first to comment

Leave a Reply

Your email address will not be published.


*