標準 LAMP インストールを備えた Ubuntu 14.04。
単一の IP で、SNI を使用した SSL を使用して 2 つの Web サイトを実行しようとしています。2 つの異なる証明書があり、正しく適用されています。問題は、HTTP から正しい HTTPS Web サイトへのリダイレクトです。
最新の Firefox でテストしていますが、TLS は正しく設定されています。
つまり、すべての HTTP リクエストは ... にリダイレクトされることになります。
書き換えモジュールを無効/有効にして確認しましたが、違いはありませんでした
有効なサイト:
(メインサイト) dev.domain.com.conf
。その内容は通常の SSL 仮想ホスト コンテンツです...
<VirtualHost *:443>
ServerName dev.domain.com
ServerAlias dev.domain.com
...
(HTTPS 経由でメイン サイトにリダイレクトするために、この追加の仮想ホストを作成しました)
dev.domain.com.80.conf
。その内容は次のとおりです。
<VirtualHost *:80>
ServerName dev.domain.com
ServerAlias dev.domain.com
ServerAdmin xxxxxxx
Redirect permanent / https://dev.domain.com/
</VirtualHost>
(2 番目のメイン サイト) www.domain.com.conf
。そのコンテンツは通常の SSL vhost です...
<VirtualHost *:443>
ServerName www.domain.com
ServerAlias www.domain.com
...
(HTTPS 経由でメイン サイトにリダイレクトするために、この追加の仮想ホストを作成しました) www.domain.com.80.conf
。その内容は次のとおりです。
<VirtualHost *:80>
ServerName www.domain.com
ServerAlias www.domain.com
ServerAdmin rxxxxx
Redirect permanent / https://www.domain.com/
</VirtualHost>
リダイレクト用の両方の仮想ホスト構成に以下を追加した後でも、効果はありませんでした。
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
dev.domain.com
HTTP はHTTPS に正しく転送されますがdev.domain.com
、 HTTP はwww.domain.com
HTTPS に転送されますdev.domain.com
。
また、両方のサイトの https URL にアクセスすると、正常に動作します。http から https へのリダイレクトのみが動作しません。
答え1
おそらく、さまざまな Apache 構成を何度も編集した後、ブラウザ キャッシュが原因でした。要約は次のとおりです。
- mod_rewrite: 必須ではありません。
- NameVirtualHost: 必須ではありません。
- 各サイトに対して、リダイレクト用に構成された 1 つの仮想ホスト。
- 上記のリダイレクト コマンドをその中に含めます。
それでおしまい。