2017-05-04 13 views
1

domain1.comdomain2.comにリダイレクトする場合は、.htaccessを使用し、wwwとhttpsを適用します。私はこの質問への部分的な答えを見たが、これらの例すべての7のために働くなしています:.htaccess HTTP [S]://domain1.comをHTTPS://WWW.domain2.comにリダイレクト

SOURCEのURL

  1. http://domain1.com
  2. http://www.domain1.com
  3. http://domain2.com
  4. http://www.domain2.com
  5. https://domain1.com
  6. https://www.domain1.com
  7. https://domain2.com

TARGETのURL:

RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteCond %{HTTPS} on 
RewriteRule ^(.*)$ https://www.domain2.com/$1 [R=301,L] 

RewriteCond %{HTTP_HOST} !^www\. [NC,OR] 
RewriteCond %{HTTPS} !^on 
RewriteRule ^(.*)$ https://www.domain2.com/$1 [R=301,L] 

domain1.comwww.domain1.comを、そしてdomain2.comがでエイリアスとして設定されています

https://www.domain2.com 

このコードは、上記1-4の世話をしますApache仮想ホストファイル私もホストファイルでRedirectMatchを使ってみましたが、うまく動作しませんでした。

+0

彼の質問は、それよりも、http://serverfault.comの方がより適切だと思います。 – reporter

+0

SSL証明書には、domain1.com、www.domain1.com、domain2.com、およびwww.domain2.comの4つの名前がす​​べて含まれていますか? –

+0

SSL証明書にはwww.domain1.comとwww.domain2.comしかありません。 –

答えて

0

仮想ホストでこれを行うほうが効率的です。 (domain1.comは、理想的には別々の仮想ホストとして設定し、無条件Redirectを持っていることになる。)

をしかし、あなたはあなたの質問.htaccessをタグ付けしましたから、次の代わりに試してみてください。

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^www\.domain1\.com [NC,OR] 
RewriteCond %{HTTP_HOST} !^www\. [NC,OR] 
RewriteCond %{HTTPS} !on 
RewriteRule (.*) https://www.domain2.com/$1 [R=301,L] 

SSLをあなたのSSL証明書は、頂点のドメインが含まれていない場合、証明書はwww.domain1.comwww.domain2.com

を持ってdomain1.com/domain2.comこれをリダイレクトすることはできません(リストの#5と#7)。 (これは、メインサーバーの設定でこれを行うかどうかにかかわらず、または.htaccessです)。リダイレクトが発生する前にSSLハンドシェイクが最初に行われ、ユーザーはサイトにアクセスする前にブラウザでエラーが発生します。

+0

ありがとうございます。私はこれを試しましたが、それはまだケース5-7のために正しく動作していません。たぶん私はこれらの頂点ドメインを証明書に追加し、仮想ホストからリダイレクトするべきです。 –

+0

私はちょうど#6を処理するために私の答えを更新しました(申し訳ありませんが、その前に論理を持っています)。しかし...はい、5&7はあなたが頂点ドメインをカバーするSSL証明書を持っていなければ動作しません。 – MrWhite

+1

素晴らしい、それは動作します。ありがとうございました! –

関連する問題