2017-07-19 12 views
0

私のweb.configファイルに、URLに 'www'サブドメインを使用させる書き換えルールを設定します。これは、そうのように行われます。URLをwwwに強制するが、httpを無視するURLを書き換えます。

<rules> 
    <rule name="Add WWW" stopProcessing="true"> 
    <match url="^(.*)$" /> 
    <conditions> 
     <add input="{HTTP_HOST}" pattern="^(?!www\.)(.*)$" /> 
    </conditions> 
    <action type="Redirect" url="http://www.{C:0}{PATH_INFO}" redirectType="Permanent" /> 
</rule> 

しかし、プロジェクトはSSLを使用し、いくつかにはないいくつかは複数のドメイン、上の複数のWebサイトを実行しています。

上記コードはハードコードhttp://にリダイレクトされています。私が探しているのは、httpやhttpsプロトコルがハードコードされずにリダイレクト中に維持されるように抽象化することです。

望ましい結果のいくつかの例は以下のとおりです。

感謝します。

答えて

0

これを実行する1つの方法を説明するreferenceが見つかりました。これは、アクションURLの '変数'としてキーと値のペアを書き換えて使用しています。私が知る限り、プロトコル内でネイティブ変数としてプロトコルを取得する方法はありません。

ルールは必須です何をすべき、次のように変更されました。また、同じことを達成するための別の方法の中で、これを含む別のreferenceあります

<rewrite> 
    <rules> 
      <rule name="Add www maintain https" stopProcessing="true"> 
      <match url="^(.*)$" /> 
      <conditions> 
      <add input="{HTTP_HOST}" pattern="^(?!www\.)(.*)$" /> 
      </conditions> 
      <action type="Redirect" url="{MapSSL:{HTTPS}}www.{C:0}{PATH_INFO}" redirectType="Permanent" /> 
     </rule> 
    </rules> 
    <rewriteMaps> 
     <rewriteMap name="MapSSL" defaultValue="http://"> 
      <add key="ON" value="https://" /> 
      <add key="OFF" value="http://" /> 
     </rewriteMap> 
    </rewriteMaps> 
</rewrite> 

関連する問題