2017-08-26 14 views
1

正しい順序で書き換えのフローを取得できず、HTTPS がデフォルトで 'www'ドメインにリダイレクトされました。.htaccessまたはhttpd.conf内のサブドメインでHTTPSを強制する

私がしようとしているのは、何も提供されておらず、同時にHTTPSに強制されている場合は強制的に 'www'ドメインですが、HTTPSが必要とされる2つのサブドメインもあります。

シナリオ:

http://[domain.com]/* -> https://www.[domain.com]/* 
http://assets.[domain.com]/* -> https://assets.[domain.com]/* 
http://payloads.[domain.com]/* -> https://payloads.[domain.com]/* 

私が理解したように、この第1ブロックチェックHTTPSがオンにされておらず、サブドメインが存在しない場合、これがあればチェックしますが、その後、https://www.[domain.com]/

RewriteCond %{HTTPS} !=on 
RewriteCond %{HTTP_HOST} !^www\.|assets\.|payloads\. [NC] 
RewriteRule^https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

にリダイレクトするかどうかHTTPSがオンではなく、適切なサブドメインが見つかった場合は、https://[subdomain].[domain.com]/

RewriteCond %{HTTPS} !=on 
RewriteCond %{HTTP_HOST} ^www\.|assets\.|payloads\. [NC] 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
にリダイレクトされます。

最初の条件/ルールセットはデフォルトのwwwサブドメインにリダイレクトされますが、ループに入り、https://www.[domain.com]に行くと何も表示されません。

私の論理に何が間違っているか説明できますか?私はここで他の答えを見てきました。彼らは助けてくれないか、答えがありません。

httpd.confでHTTPSを強制し、.htaccessにリダイレクトするのが適切な場合は、同様に行うことができます。

ありがとうございます。

答えて

2

あなたはhttpd.confまたはvhost.congまたはサイトルートの.htaccessにこれらの2つのルールで実行できます。

RewriteEngine On 

# for assets or payload subdomains 
RewriteCond %{HTTP_HOST} ^(?:assets|payloads)\. [NC] 
RewriteCond %{HTTPS} off 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE] 

# for rest 
RewriteCond %{HTTP_HOST} !^www\. [NC,OR] 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC] 
RewriteRule^https://www.%1%{REQUEST_URI} [R=301,L,NE] 
+0

資産及びペイロードが動作しているようですリダイレクトが、WWWを有する第二は、無限ループにまだあります。 – mwieczorek

+0

テストは新しいブラウザであるか、ブラウザのキャッシュを完全に消去します。 – anubhava

+0

メインブラウザのキャッシュをクリアして、セカンダリブラウザのすべてをクリアしましたか?同じ問題。 – mwieczorek

関連する問題