[SOLVED] How to redirect http to https on apache2

Good day,

I was able to install a Let's Encrypt SSL certificate, it works when I'd input a https in Firefox but the thing is that I'm not able to have the http redicrected to https automaticley, I search the internet I do find things that I'd tried but nothings seem to work, I did trials and errors for more than 3 hours now.

Is someone is able to help me with this please?

Here is my site configuration file:

Code:
<VirtualHost *:443>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        ServerName inventory.zawack.net

Alias /.well-known/acme-challenge/ /var/www/letsencrypt/.well-known/acme-challenge/
  <Directory "/var/www/letsencrypt/.well-known/acme-challenge/">
      Options None
      AllowOverride None
      ForceType text/plain
      RedirectMatch 404 "^(?!/\.well-known/acme-challenge/[\w-]{43}$)"
  </Directory>

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/web

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf
Include /etc/apache2/ssl_rules/ssl_inventory.zawack.net

</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

and also ports.conf :

Code:
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf

Listen 80

<IfModule ssl_module>
        Listen 443
</IfModule>

<IfModule mod_gnutls.c>
        Listen 443
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Thanks in advance for the help!

Guillaume
 
Solution
Depending on the build of Apache the syntax might change a little bit. I had to tinker a bit myself, check the forum for your linux distro for the exact syntax.
Simply rewrite all URLs starting with http: to https: - you'll need the mod_rewrite apache module, and then it's a couple lines:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

When adding those lines to

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]


I still need to write https to get it work. When entering http it give out that error:
Screenshot%20at%202020-10-23%2011-46-24.png

When entering https:
Screenshot%20at%202020-10-23%2011-46-59.png


(I reload apache2 with service apache2 reload)

Thanks,

Guillaume