Introduzione

Se hai installato un certificato SSL per il tuo dominio, il tuo prossimo passo dovrebbe essere quello di configurare l'applicazione per servire tutto il traffico web su HTTPS.

A differenza di HTTP, dove le richieste e le risposte vengono inviate e restituite in testo normale, HTTPS utilizza TLS/SSL per crittografare la comunicazione tra il client e il server.

I vantaggi dell'utilizzo di HTTPS su HTTP sono numerosi:

  • Tutti i dati sono crittografati in entrambe le direzioni. Di conseguenza, le informazioni sensibili non possono essere lette se intercettate.
  • Chrome, Firefox e tutti gli altri browser più diffusi contrassegneranno il tuo sito Web come sicuro.
  • HTTPS consente di utilizzare il protocollo HTTP/2, che migliora significativamente le prestazioni del sito.
  • Google preferisce i siti Web HTTPS. Il tuo sito si posizionerà meglio se offerto tramite HTTPS.

Il reindirizzamento può essere impostato a livello di applicazione o server. Questo articolo spiega come reindirizzare il traffico HTTP su HTTPS utilizzando il file .htaccess.

Se si dispone dell'accesso root SSH al server Linux su cui è in esecuzione Apache, il metodo consigliato è impostare il reindirizzamento nel file di configurazione dell'host virtuale del dominio. Altrimenti, è possibile configurare il reindirizzamento nel file .htaccess. Il server Apache legge il file .htaccess su ogni richiesta di pagina, il che rallenta il server web.

La maggior parte dei pannelli di controllo, come cPanel, consente di forzare il reindirizzamento HTTPS utilizzando un'interfaccia utente grafica.

Reindirizzare HTTP a HTTPS utilizzando .htaccess

.htaccess è un file di configurazione in base alla directory per il server web Apache. Questo file viene utilizzato per definire come Apache serve i file dalla directory in cui è posizionato e abilitare/disabilitare funzionalità aggiuntive.

In genere, il file .htaccess si trova nella directory principale del dominio, ma è possibile avere altri file .htaccess nelle sottodirectory.

Puoi modificare il file .htaccess (o crearne uno nuovo) tramite SSH o FTP.

Per reindirizzare le richieste HTTP su HTTPS, aprire il file .htaccess e aggiungere il seguente codice:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Ecco cosa fa ogni riga di codice:

  • RewriteEngine On - Abilita le funzionalità di riscrittura e ci consente di utilizzare le regole di riscrittura.
  • RewriteCond %{HTTPS} off - Verifica se la connessione è del tipo di richiesta HTTP. Quando viene soddisfatta la condizione, viene eseguita la riga successiva. Vogliamo solo reindirizzare le richieste HTTP. Se ometti questa condizione, otterrai un ciclo di reindirizzamento.
  • RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] - Reindirizzare tutte le richieste HTTP su HTTPS, con il codice di stato 301 (spostato in modo permanente). Questa regola verrà riscritta da http://example.com/about a http://example.com/about oppure da http://www.example.com/about a https://www.example.com/about.

Se ci sono altre regole nel file, aggiungi il codice di riscrittura nella parte superiore del file.

Questo è tutto! Dopo aver aggiunto queste righe, salva il file e aggiorna il tuo browser. Tutte le richieste HTTP devono essere reindirizzate a HTTPS.

Quando si modifica il file .htaccess, non è necessario riavviare il server poiché Apache legge il file su ogni richiesta.

Ecco un'altra regola più generica per reindirizzare da HTTP a HTTPS:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
  • HTTP_HOST è l'hostname richiesto dal visitatore durante l'accesso al sito. Questa variabile rappresenta il tuo nome di dominio.
  • REQUEST_URI è l'URI utilizzato per accedere alla pagina.

Reindirizzare HTTP a HTTPS e WWW a non WWW

È possibile accedere a qualsiasi sito Web su due URL: con il prefisso www (come www.example.com) e senza www (come esempio.com). La maggior parte dei proprietari di siti Web sceglie una versione come dominio preferito e reindirizza ad esso, questa è una prassi consigliata.

Per reindirizzare da HTTP a HTTPS e da www alla versione non www del tuo sito, aggiungi le seguenti righe al file .htaccess:

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

Qui abbiamo due condizioni. Il primo controlla se la connessione non è HTTPS e il secondo controlla se la richiesta inizia con www. Se una delle condizioni è vera (l'operatore [OR]), viene eseguita la regola di riscrittura.

Reindirizzare HTTP a HTTPS e non WWW a WWW

Se preferisci la versione www del tuo sito usa la seguente regola per reindirizzare da HTTP a HTTPS e da non www a www

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

Conclusione

Ti abbiamo mostrato come modificare il tuo file .htaccess per reindirizzare tutto il traffico HTTP su HTTPS.

Se hai accesso ai file di configurazione di Apache, per prestazioni migliori, dovresti forzare HTTPS creando un reindirizzamento 301 nel Virtual Host del dominio.