Redirezione di un intero sito
Apache 1.3x
Per redirezionare un intero sito (ad esempio da un dominio http:www.miosito.com su https://www.miosito.com) si può utilizare la funzione Rewrite di Apache.
Nel caso specifico si abbia installati apache e apache-ssl, si può creare in apache il Virtual host da redirezionare con:
cat >> /etc/apache/conf.d/sito_da_redirezionare.conf <<'EOFile'
# Apache quando parte carica tutti i files.conf che trova in /etc/apache/conf.d/
<VirtualHost 192.168.0.9:80>
ServerName extranet.galimberti.net
# Definiamo questo virtual host, così la regola di redirezionevale solo per lui
RewriteEngine On
# Attiviamo mod_rewrite
RewriteCond %{SERVER_PORT} !^443$
# La regola di rewrite vale solo se la richiesta non avviene sulla porta 443 _E_
RewriteCond %{HTTP_HOST} ^extranet.galimberti.net$
# se il nome del sito richiesto è extranet.galimberti.net
RewriteRule ^/.* https://extranet.galimberti.net [L,R]
# Se c'è matching, rimanda il browser a questo indirizzo, riscrivendo l'indirizzo nell'addre bar.
</VirtualHost>
EOFile
Si riavvi apache:
/etc/init.d/apache stop; /etc/init.d/apache start
Apache 2.x
Attenzione, in questo caso potrebbero esserci complicazioni date dalla diversa gestione del VirtualHost. E' imperativo definire le regole di rewrite all'interno del virtualhost http (anche vuoto), e farle puntare a quello https:
- Definire il Virtual Host http, con le regole:
NameVirtualHost*:80
<VirtualHost *:80>
ServerAdmin webmaster@domain.tld
ServerName extranet.galimberti.net
RewriteEngine on
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [L,R]
#RewriteLog "/var/log/apache2/rewrite.log"
#RewriteLogLevel 2
</VirtualHost>
Questo invece è il VirtualHost https:
NameVirtualHost *:443
<VirtualHost *:443>
ServerAdmin webmaster@domain.tld
ServerName extranet.galimberti.net
SSLEngine On
DocumentRoot /var/www/extranet.galimberti.net
SSLCertificateFile /etc/apache2/ssl/extranet.galimberti.net.crt
</VirtualHost>