複数のサイトを実行しているIIS7Webサーバーがあります。一部のサイトは1つのドメインのサブドメインであり、他のサイトは完全に別個のドメインです。 IIS re-writeを使用して、1つのドメインのすべてのサブドメインサイトをhttpsにリダイレクトしたいが、他のドメインはそのままにしておきたい。たとえば、次のサイトがあります。同じWebサーバー:
one.test.com、two.test.com、otherdomain.com
そして、グローバルIIS書き換えてリダイレクトする http://one.test.com および http://two.test.com からhttpsへ。ただし、otherdomain.comは影響を受けません。
これが私がこれまでに持っているものであり、正規表現をテストしたとき、それは正しいように見えますが、サブドメインサイトをリダイレクトしていません:
<rewrite>
<globalRules>
<rule name="Redirect to HTTPS" enabled="true" stopProcessing="true">
<match url="(.*)(\.test\.com)" />
<conditions logicalGrouping="MatchAny">
</conditions>
<action type="Redirect" url="https://{R1}{R2}" redirectType="SeeOther" />
</rule>
</globalRules>
</rewrite>
私はこれを複雑にしすぎているのか、それとも明らかなものがないのですか?
乾杯。
HTTP_Hostに一致する条件をルールに追加する必要があります(URL書き換えの「url」変数にはホスト名が含まれていません)。
<globalRules>
<rule name="Redirect to HTTPS" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_Host}" pattern="(.+)\.test\.com" />
</conditions>
<action type="Redirect" url="https://{C:0}/{R:0}" />
</rule>
</globalRules>
このルールは、*。test.com上のすべてのリクエストをHTTPSにリダイレクトする必要があります。
この条件を追加する必要があります<add input="{HTTPS}" pattern="off" />
上記のソリューションで。それ以外の場合は、ループで終了します。したがって、ルールは次のようになります。
<globalRules>
<rule name="Redirect to HTTPS" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" />
<add input="{HTTP_Host}" pattern="(.+)\.test\.com" />
</conditions>
<action type="Redirect" url="https://{C:0}/{R:0}" />
</rule>
</globalRules>