Introduzione

Quando un certificato SSL è installato sul server, il sito Web non è disponibile tramite una connessione HTTPS protetta per impostazione predefinita. È necessario aggiungere "HTTPS" a un URL ogni volta che è necessario connettersi in modo sicuro. Il modo migliore per ottenere la massima sicurezza per i visitatori del sito Web è abilitare un redirect automatico da HTTP a HTTPS.

Questo tutorial vi mostrerà come reindirizzare un URL da HTTP verso HTTPS, ad esempio http://esempio.it a https://esempio.it, con Apache su Ubuntu 18.04.

Prerequisiti

In questo tutorial si presuppone che si disponga di privilegi di superuser, ovvero sudo o root, sul server che esegue Apache. Se non lo hai già impostato, segui questo tutorial: Configurazione iniziale Ubuntu 18.04 LTS.

Si presume che Apache sia installato. Se non è installato segui questo tutorial: Come installare LAMP (Apache MySQL PHP) su Ubuntu 18.04 LTS.

Abilitare Rewrite Module

Per eseguire il redirect da HTTP a HTTPS, utilizzeremo il modulo Apache mod_rewrite. In questo modo, gli utenti potranno accedere al tuo con maggiore sicurezza.

Innanzitutto, verificare che il modulo mod_rewrite sia abilitato con questo comando:

sudo a2enmod rewrite

Riavviare Apache:

sudo service apache2 restart

Con il modulo Rewrite abilitato, possiamo configurare Apache con le regole di redirect usando il file .htaccess.

Vediamo come utilizzare il file .htaccess per impostare le regole di redirect.

Abilitare il file .htaccess

Per abilitare l'.htaccess apri il tuo file di configurazione di Apache. Su Ubuntu, il file di configurazione predefinito si trova in /etc/apache2/sites-enabled/000-default.conf, quindi aprire il file:

sudo nano /etc/apache2/sites-enabled/000-default.conf

Trova la DocumentRoot del tuo sito e prendine nota. Per impostazione predefinita, la cartella principale (DocumentRoot ) è /var/www/html, quindi utilizzeremo questa directory nella nostra configurazione di esempio.

Aggiungi la seguente direttiva Directory alla fine del file, se non è già presente, e assicurati di sostituire DocumentRoot con la vostra directory (se è diversa) altrimenti lasciare la seguente:

 <Directory /var/www/html>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
 </Directory>

Salvare e chiudere il file premendo CTRL+X, seguito da Y per salvare le modifiche e quindi ENTER se stai utilizzando nano.

Il file di configurazione adesso dovrebbe essere simile al seguente:

<VirtualHost *:80>
	...

	ServerAdmin [email protected]
	DocumentRoot /var/www/html

	ServerName TUO_DOMINIO.it
    ServerAlias www.TUO_DOMINIO.it
	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined

	...

</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

 <Directory /var/www/html>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
 </Directory>

Ora riavvia Apache per rendere effettiva la modifica:

sudo service apache2 restart

Apache è configurato per leggere i file .htaccess situati ovunque nella directory /var/www/html. Aggiungiamo ora le regole di riscrittura per il redirect.

Adesso creare o modificare il file .htaccess per abilitare le regole di redirect. Spostiamoci di directory verso la DocumentRoot, nel nostro caso /var/www/html:

cd /var/www/html

Creiamo o modifichiamo il file .htaccess:

sudo nano .htaccess

Naturalmente, se non hai ancora creato il file, sarà vuoto. Adesso impostiamo il redirect da www a non-www oppure da non-www a www.

Aggiungere le seguenti righe di codice, per impostare il redirect da www a non-www con HTTPS:

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]

Viceversa da non-www a www con HTTPS:

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [L,NE,R=301]

Conclusione

In questo tutorial abbiamo imparato a configurare le regole di redirect per Apache2 da www a non-www e viceversa con HTTPS.