I have the problem of redirecting the http to https but all the information/tutorials and descriptions are not working. We are using Apache2 on a Debian machine and this is the conf file
<VirtualHost *:80>
# 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 www.example.com
ServerAdmin webmaster@localhost
ServerName assets.xxx.it
ServerAlias assets.xxx.it
DocumentRoot /var/www/assets/eit_resource_manager_frontend/build
# 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
RedirectMatch ^(.*)$ https://assets.xxx.it$1
</VirtualHost>
<VirtualHost *:443>
ServerName assets.xxx.it
ServerAlias assets.xxx.it
Protocols h2 http/1.1
<Directory "/var/www/assets/eit_resource_manager_frontend/build">
RewriteEngine on
#Don't rewrite files or directories
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
#Rewrite everything else to index.html to allow html5 state links
RewriteRule ^ index.theml [L]
</Directory>
# SSL Configuration
# Other Apache Configuration
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/assets.xxx.it/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/assets.xxx.it/privkey.pem
</VirtualHost>
After any change in the file I restart the server but the HTTP is not redirected to HTTPS. I have tried different implementation with same poor result. For further information, the login page is on assets.xxx.it/login and the redirect from "/" to "/login" is handled inside the app (via React Router)
Any suggestions?
CodePudding user response:
when creating the ssl certificate with certbot and the apache plugin a SSL config file was created, so we came up with having a file for vh 80 created by us, a file for vh 443 created by us and a file for both 80 and 443 generated while creating the certificate. As said, this file had instructions for both port 80 and 443 but, despite the fact that we asked for the redirect while creating the certificate, there was not such an instruction in this conf file. So we added the RedirectMatch instruction and it worked. We also deleted the vh 443 conf file that we had created and it went on working. After other search I have also understood that the RewriteCond and RewriteRule in the Directory tag, are there just if you want to use the htaccess file in the repo folder for a more grained control I believe that comments like the ones by @Nic3500 are just confusing and written by a far more confused person, so people should avoid making comments if they are not knowledgeable and able to be helpful