Mam problem z użyciem mod_rewrite do wymuszania przekierowania żądań HTTP do HTTPS przy użyciu Apache 2.2.22 na Ubuntu Server 12.04.Przekierowanie HTTP do HTTPS z Apache
Kim/etc/apache2/sites-available/default plik jest następujący:
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
</VirtualHost>
Gospodarz HTTPS jest zdefiniowana w default-ssl w tym samym katalogu.
Podczas wizyty na lokalnym adresie IP serwera, przekierowanie wydaje się działać poprawnie. Jednak dostęp do niego za pośrednictwem nazwy FQDN nie jest możliwy. Przy użyciu nazwy FQDN strona jest dostępna w porcie 5443, który jest odwzorowany w zaporze sieciowej na 443 na serwerze, więc być może ma to związek z problemem. Nie mogę po prostu użyć portu 443 bezpośrednio, ponieważ jest on używany na tym adresie IP przez inny serwer.
celu dalszego wyjaśnienia, są następujące ważne linki:
https://website:5443
https://192.168.200.80:443
Przekierowanie działa tutaj:
http://192.168.200.80
Ale dodaje daje 400 Bad Request, i to, gdzie jest potrzebne przekierowanie :
http://website:5443/
"Twoja przeglądarka wysłała żądanie, którego ten serwer nie mógł zrozumieć.Powód: Mówisz zwykłym HTTP do portu serwera z obsługą SSL. Zamiast tego użyj schematu HTTPS, aby uzyskać dostęp do tego adresu URL. "
To wydaje się długi, aby zrobić prostą rzecz, może masz powód, dla niego jednak. W anycase powinieneś sprawdzić mod_proxy: http://httpd.apache.org/docs/2.0/mod/mod_proxy.html wraz z tym względnym pytaniem SO: http://stackoverflow.com/questions/1162375/apache-port -pełnomocnik. –