Ciao ragazzi ! In questo tutorial, mostreremo come reindirizzare forzatamente da Apache HTTP a HTTPS
Se sei il proprietario di un sito web o un amministratore di sistema, è probabile che tu abbia a che fare con Apache regolarmente. Una delle attività più comuni che probabilmente eseguirai è il reindirizzamento del traffico HTTP alla versione protetta (HTTPS) del tuo sito web.
A differenza di HTTP, in cui le richieste e le risposte vengono inviate e restituite in chiaro, HTTPS utilizza TLS/SSL per crittografare la comunicazione tra il client e il server.
Lo vedremo in due modi diversi:
io. Utilizzo dell'host virtuale.
ii. Usando .htaccess
Iniziamo
Utilizzo dell'host virtuale
Nella direttiva dell'host virtuale, puoi specificare la radice del documento del sito (la directory che contiene i file del sito Web), creare una politica di sicurezza separata per ciascun sito, utilizzare certificati SSL diversi, configurare il reindirizzamento e molto altro.
Quando un certificato SSL viene installato su un dominio, avrai due direttive host virtuali per quel dominio. Il primo per la versione HTTP del sito sulla porta 80 e l'altro per la versione HTTPS sulla porta 443.
Nelle distribuzioni basate su Red Hat come CentOS e Fedora, i file host virtuali sono archiviati in /etc/httpd/conf.d. Mentre su Debian e suoi derivati come Ubuntu i file sono archiviati in /etc/apache2/sites-available
directory.
Per reindirizzare un sito Web a HTTPS, utilizza il Redirect
direttiva come mostrato con l'esempio “unixcop.com”
<VirtualHost *:80>
ServerName unixcop.com
ServerAlias www.unixcop.com
Redirect permanent / https://unixcop.com/
</VirtualHost>
<VirtualHost *:443>
ServerName unixcop.com
ServerAlias www.unixcop.com
Protocols h2 http/1.1
</VirtualHost>
Spiegazione
Diamo una spiegazione al codice sopra
VirtualHost *:80
– Il server Apache ascolta le connessioni in entrata sulla porta 80 (HTTP) per il dominio specificato.VirtualHost *:443
– Il server Apache ascolta le connessioni in entrata sulla porta 443 (HTTPS) per il dominio specificato.
Il ServerName
e ServerAlias
le direttive specificano i nomi di dominio dell'host virtuale. Assicurati di sostituirlo con il tuo nome di dominio. (nel nostro caso unixcop.com)
La riga evidenziata, Redirect permanent / https://example.com/
all'interno dell'host virtuale HTTP, reindirizza il traffico alla versione HTTPS del sito.
In genere si desidera anche reindirizzare la versione HTTPS www del sito a quella non www o viceversa. Ecco un esempio di configurazione:
<VirtualHost *:80>
ServerName unixcop.com
ServerAlias www.unixcop.com
Redirect permanent / https://unixcop.com/
</VirtualHost>
<VirtualHost *:443>
ServerName unixcop.com
ServerAlias www.unixcop.com
Protocols h2 http/1.1
<If "%{HTTP_HOST} == 'www.unixcop.com'">
Redirect permanent / https://unixcop.com/
</If>
</VirtualHost>
Il codice sopra sta verificando se l'intestazione della richiesta contiene il dominio www e reindirizza alla versione non www.
Ogni volta che apporti modifiche ai file di configurazione è necessario riavviare o ricaricare il servizio Apache affinché le modifiche abbiano effetto
.htaccess
è un file di configurazione per directory per il server web Apache. Questo file può essere utilizzato per definire come Apache serve i file dalla directory in cui è posizionato il file e per abilitare/disabilitare funzionalità aggiuntive.
Di solito, il .htaccess
il file è posizionato nella directory principale del dominio, ma puoi avere altri .htaccess
file nelle sottodirectory.
Questo metodo richiede il mod_rewrite
modulo da caricare sul server Apache. Questo modulo è caricato per impostazione predefinita sulla maggior parte dei server. Se possibile, preferisci creare un reindirizzamento nell'host virtuale perché è più semplice e sicuro.
Per reindirizzare tutto il traffico HTTP su HTTPS, apri la radice .htaccess
file e aggiungi il codice seguente
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://unixcop.com/$1 [L,R=301]
Spiegazione
RewriteEngine On
– abilita le funzionalità di riscrittura.RewriteCond %{HTTPS} off
– verifica la connessione HTTP e, se la condizione è soddisfatta, viene eseguita la riga successiva.RewriteRule ^(.*)$ https://unixcop.com/$1 [L,R=301]
– reindirizza da HTTP a HTTPS con codice di stato 301 (Spostato in modo permanente).
L'esempio seguente ha una condizione aggiuntiva che controlla se la richiesta inizia con www
. Usalo per obbligare tutti i visitatori a utilizzare la versione HTTPS non www del sito
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.unixcop\.com [NC]
RewriteRule ^(.*)$ https://unixcop.com/$1 [L,R=301]
Durante la modifica di .htaccess
file, non è necessario riavviare il server perché Apache legge il file ad ogni richiesta.
Quindi, sai già come forzare Apache a utilizzare HTTPS.
Documentazione Apache