HTTPS provides encrypted traffic with the use of SSL or TLS. As websites are moving away from HTTP to HTTPS, it's generally a good idea to automatically redirect visitors of the HTTP version of your website to the HTTPS version.

This can be done using Apache whether using the Redirect directive in your Apache's VirtualHost configuration or by using htaccess file.

Redirect HTTP to HTTPS in Apache using htaccess

  1. Enable rewrite module for Apache.
    $ sudo a2enmod rewrite #Ubuntu and Debian derivatives
  2. Open or create a .htaccess file on the web folder where you want to set the redirection from using your preferred text editor.
    $ sudo vi /var/www/html/.htaccess
  3. Add redirect directive from within the .htaccess file.
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://www.simplified.guide/$1 [R,L] 
  4. Hard-reload the web page to test the redirect.

Redirect HTTP to HTTPS in Apache using mod_rewrite on VirtualHost configuration

  1. Enable rewrite module for Apache.
    $ sudo a2enmod rewrite #Ubuntu and Debian derivatives
  2. Open VirtualHost config that you want to set up the redirection from using your favorite text editor.
    $ sudo vi /etc/apache2/sites-enabled/000-default.conf
  3. Add RewriteRule and related directive in the VirtualHost configuration just as the htaccess method.
    <VirtualHost *:80>
        RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule (.*) https://www.simplified.guide/$1 [R,L] 
    </VirtualHost>
  4. Restart Apache for the changes to take effect.

Redirect HTTP to HTTPS in Apache using Redirect directive

  1. Open VirtualHost config for HTTP that you want to set up the redirection from using your favorite text editor.
    $ sudo vi /etc/apache2/sites-enabled/000-default.conf
  2. Add redirect directive within the VirtualHost configuration to redirect to the HTTPS URL.
    <VirtualHost *:80>
        ServerName simplified.guide
        Redirect permanent / https://www.simplified.guide/
    </VirtualHost>

    permanent is equivalent to 301 redirect and you can use temporary instead for 302 redirect.

  3. Restart Apache for the changes to take effect.

Guide compatibility:

Operating System
Ubuntu 16.04 LTS (Xenial Xerus)
Ubuntu 16.10 (Yakkety Yak)
Ubuntu 17.04 (Zesty Zapus)
Ubuntu 17.10 (Artful Aardvark)
Ubuntu 18.04 LTS (Bionic Beaver)
Ubuntu 18.10 (Cosmic Cuttlefish)
Ubuntu 19.04 (Disco Dingo)
Discuss the article:

Comment anonymously. Login not required.

Share!