2017-09-01 9 views
1

現在、ワイルドカードサブドメインで動作するように構築されたアプリケーションで作業しています。例についてはApache Redirectワイルドカードサブドメインをサブドメイン

  • customer1.domain.com

  • customer2.domain.com

は、だから我々は* .domain.comにワイルドカードSSL証明書を購入し、すべてのサブドメインをhttpからhttpsにリダイレクトしました。

これまでは簡単でしたが、現在ではブラウザにwww.customer1.domain.comを手動で入力する顧客がいます。これは仮想ホストが存在しないためです。

:ように見えるHTTPSに同じターゲットに

<VirtualHost {{IP-ADRR}}:443> 
    Servername %1.domain.com 
    VirtualDocumentRoot /path/to/webroot/%0 
    Include /etc/httpd/conf/options-ssl-standard.conf 
</VirtualHost> 

すべてのHTTPリクエストのための私達のリダイレクト:私たちのバーチャルホストがどのように見えるか私が今やりたいが、http://www.wildcard.domain.comからhttps://wildcard.domain.comにすべての要求をリダイレクト

<Virtualhost {{IP-ADRR}}:80> 
    ServerName %1.domain.com 
    RewriteEngine On 
    RewriteCond %{HTTPS} !=on 
    RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L] 
</VirtualHost> 
+0

すぐにリダイレクトするためにHTTP 301リダイレクトの状態に

  • Lを使用するには、ユーザーがhttp ** s **://www.wildcard.domain.comに行くとどうなりますか?あなたのソリューションは下にありますか? –

  • 答えて

    1

    リダイレクトするためのソリューションは、次のとおりです。

    <Virtualhost {{IP-ADRR}}:80> 
        ServerName %1.domain.com 
        RewriteEngine On 
        RewriteCond %{HTTPS} off [OR] 
        RewriteCond %{HTTP_HOST} ^www\. [NC] 
        RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC] 
        RewriteRule^https://%1%{REQUEST_URI} [L,NE,R=301] 
    </VirtualHost> 
    

    説明:

    RewriteCond %{HTTPS} off [OR] 
    RewriteCond %{HTTP_HOST} !^www\. [NC] 
    

    この2行であるが、それらは、要求がリダイレクトされるべきかどうかを決定するために使用される、リダイレクト条件です。条件は[OR]で結合されているため、これらの2つの条件のいずれかがtrueを返すと、Apacheは書き換えルール(リダイレクト)を実行します。

    最初の条件は、要求が非HTTPS URLを使用しているかどうかを判断します。 2番目の条件は、リクエストがwww URLを使用しているかどうかを判断します。私はwww \を使用しています。パターンは正規表現であるため、www。ではありません。ドットはここで特別な意味を持っているため、エスケープする必要があります。

    第4行は、URLで直接ホスト名を参照するのを避けるために使用した便利な行です。それは着信要求のホストと一致し、それをwww部分(存在する場合)とそれ以外のホスト名に分解します。後でRewriteRuleで%1を使って参照します。

    RewriteRule^https://www.%1%{REQUEST_URI} [L,NE,R=301] 
    

    RewriteRuleはリダイレクトの中心です。この行では、Apacheに要求を新しいURLにリダイレクトするように指示します。このURLは、次のように構成されています。

    • https://www
    • % 1:ホストの非WWW部分を参照
    • % {REQUEST_URI}:要求のURI、ホスト名

    なしにこれらのすべてのトークンが接合され、そして表し最終的なリダイレクトURI。最後に、我々は3つのフラグを追加します。

    • NEは、特殊文字をエスケープしないように
    • R = 301、他のルールの処理を停止し、
    関連する問題