Ho un problema utilizzando mod_rewrite per forzare il reindirizzamento delle richieste HTTP a HTTPS utilizzando Apache 2.2.22 su Ubuntu Server 12.04.Reindirizzamento da HTTP a HTTPS con Apache
mio/etc/apache2/sites-available/file di default è la seguente:
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
</VirtualHost>
L'host HTTPS è definito in default-ssl nella stessa directory.
Visitare l'indirizzo IP locale del server, il reindirizzamento sembra funzionare correttamente. Tuttavia, accedendo tramite il FQDN, non è così. Usando il FQDN, il sito è disponibile sulla porta 5443, che è mappata nel firewall su 443 sul server, quindi forse questo ha qualcosa a che fare con il problema. Non posso usare direttamente la porta 443, poiché è in uso su questo indirizzo IP da un altro server.
Per chiarire ulteriormente, i seguenti sono collegamenti validi:
https://website:5443
https://192.168.200.80:443
Il reindirizzamento lavora qui:
http://192.168.200.80
ma la seguente dà una 400 Bad Request, ed è qui che è necessario il reindirizzamento :
http://website:5443/
"Il tuo browser ha inviato una richiesta che questo server non è riuscito a capire. Motivo: si sta parlando semplicemente di HTTP a una porta del server abilitata per SSL. Utilizzare lo schema HTTPS per accedere a questo URL, per favore. "
Questo mi sembra la strada più lunga per fare una cosa semplice, forse hai una ragione per questo però. In ogni caso, dovresti controllare mod_proxy: http://httpd.apache.org/docs/2.0/mod/mod_proxy.html insieme a questa relativa domanda SO: http://stackoverflow.com/questions/1162375/apache-port -proxy. –