mod_rewrite を使用して、Ubuntu Server 12.04 で Apache 2.2.22 を使用して HTTP 要求を HTTPS に強制的にリダイレクトするという問題があります。
私の /etc/apache2/sites-available/default ファイルは次のとおりです。
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
</VirtualHost>
HTTPS ホストは、同じディレクトリの default-ssl で定義されています。
サーバーのローカル IP アドレスにアクセスすると、リダイレクトは正常に機能しているように見えます。ただし、FQDN 経由でアクセスすると、そうではありません。FQDN を使用すると、サイトはポート 5443 で利用できます。これは、ファイアウォールでサーバーの 443 にマップされているため、問題と関係がある可能性があります。ポート 443 は別のサーバーによってこの IP アドレスで使用されているため、直接使用することはできません。
さらに明確にするために、以下は有効なリンクです。
https://website:5443
https://192.168.200.80:443
リダイレクトは次の場所で機能します。
http://192.168.200.80
ただし、次の例では 400 Bad Request が返されます。ここでリダイレクトが必要になります。
http://website:5443/
「お使いのブラウザは、このサーバーが理解できないリクエストを送信しました。理由: SSL が有効なサーバー ポートに対してプレーン HTTP を使用しています。代わりに、HTTPS スキームを使用してこの URL にアクセスしてください。」