2017-04-03 8 views
0

私は、弾性ロードバランサ(ELB)を使用してAWSにドメインを設定しています。 SSLを有効にするために、AWSで管理される安全な証明書(* .domain.us)をロードバランサに追加しました。自動的に私のために働くワイルドカードAWS証明書、1、4、5、および8のおかげでhttpsのサブドメインURLからwwwを削除する方法

[1] http://www.domain.us 
[2] http://www.subdomain.domain.us 
[3] http://domain.us 
[4] http://subdomain.domain.us 
[5] https://www.domain.us 
[6] https://www.subdomain.domain.us 
[7] https://domain.us 
[8] https://subdomain.domain.us 

:私はしっかりと8つのURLの組み合わせを、以下にアクセスできるようにする必要があります。しかし、残っているURLタイプの場合、私は以下のように.htaccessファイルを更新しました: (私はAWS証明書があるので、[7]にアクセスしてwww.domain.usに変換せずに "接続できません"ワイルドカードを使用しているため、https:// ドメイン .usでは動作しませんが、https:// www .domain.usまたはhttps:// サブドメイン .domain.usはワイルドカード証明書のため正常に動作します)

RewriteEngine On 

# domain.us => www.domain.us ------------------------------------------- 
RewriteCond %{HTTP_HOST} ^domain.us 
RewriteRule^http://www.domain.us%{REQUEST_URI} [R=301,L] 

RewriteCond %{HTTPS} =on 
RewriteCond %{HTTP_HOST} ^domain.us 
RewriteRule^https://www.domain.us%{REQUEST_URI} [R=301,L] 

# www.subdomain.domain.us => subdomain.domain.us ----------------------- 
RewriteCond %{HTTP_HOST} ^www\.([^.]+\.domain\.us)$ [NC] 
RewriteRule^http://%1%{REQUEST_URI} [R=301,QSA,NC,L] 

# NO WWW http://www. becomes always http:// 
RewriteCond %{HTTPS} =on 
RewriteCond %{HTTP_HOST} ^www\.(.+\.domain\.us)$ [NC] 
RewriteRule ^(.*)$ https://%1/$1 [R=301,L] 

# http => https ------------------------------------------------------------ 
RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteCond %{HTTPS} off 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE] 

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

# END WordPress 

<Files 403.shtml> 
order allow,deny 
allow from all 
</Files> 

ELBでポート80とポート443をリッスンし、各ポートの対応するデータをインスタンスポートに送信しています。私はEC2インスタンスで80ポートと443ポートを開いています。

私は既にたくさんのSOの投稿を行っていますし、上記の.htaccessファイルを作成しましたが、まだ入手できません。 [6]と[7]が働く。私はまだブラウザで "接続が安全でない"というエラーが出る。誰でも助けてくれますか?

+0

あなたの証明書が 'domain.us'をカバーしていない場合、' https://domain.us'のリクエストを書き換えることはできません。 – CBroe

答えて

0

これはかなり一般的な「問題」であるか、むしろ設計通りに機能します。 HTTPS接続が確立される前に、ブラウザで明示的にHTTPSを呼び出しています。しかし、あなたの証明書が

[6] https://www.subdomain.domain.us 
[7] https://domain.us 

あなたは、SSL/TLS-オフロードはhttpまたは正しいHTTP_HOSTに最初の変更に扱われるコンポーネント内のロジックを実装する必要があると思いをカバーしていないと失敗する運命にありますBEFORE SSL接続が確立されています。

だから、どこへ行くあなたの方法は次のとおりです。明示的なHTTPSと

Dont'tコールのURL !!! :)

サーバーにこれをさせてください。そして、あなたのサーバの設定はこれに短縮することができます:%{REQUEST_URI}はではないは%{QUERY_STRING}を含まないこと

RewriteCond %{HTTP_HOST} !^.+\.domain.us 
RewriteRule^https://www.domain.us%{REQUEST_URI} [R=301,L] 

RewriteCond %{HTTP_HOST} ^www\.(.+\.domain\.us)$ [NC] 
RewriteRule^https://%1%{REQUEST_URI} [R=301,QSA,L] 

RewriteCond %{HTTPS} off 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

注意を。したがって、クエリ文字列は書き換え時に常に破棄されます。

関連する問題