私はweb.configファイルに書き換えルールを追加するための基礎として、回答 ここで指定 を使用しています。 httpsを強制するために、localhostで実行されていないすべてのURLに一致させる必要があります。
これが私が今持っているものです:
<system.webServer>
<rewrite> <!-- force https - https://stackoverflow.com/a/15119044/51 -->
<rules>
<rule name="Redirect HTTP to HTTPS" stopProcessing="true">
<match url="^((?!localhost).)*$"/>
<conditions>
<add input="{HTTPS}" pattern="^OFF$"/>
</conditions>
<action type="Redirect" url="https://{HTTP_Host}/{R:1}" redirectType="SeeOther"/>
</rule>
</rules>
</rewrite>
</system.webServer>
私は negative lookaround を使用して、URL内に「localhost」を含まないURLのみを照合しようとしています。しかし、これは機能していません。
では、localhost以外のURLのみを書き換えるには、このルールをどのように設定すればよいでしょうか。
この条件を試してください:
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect HTTP to HTTPS" stopProcessing="true">
<match url="^(.*)$"/>
<conditions>
<add input="{HTTPS}" pattern="^OFF$"/>
<add input="{HTTP_Host}" matchType="Pattern" pattern="^localhost$" negate="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_Host}/{R:1}" redirectType="SeeOther"/>
</rule>
</rules>
</rewrite>
</system.webServer>
negate
パターンに対してlocalhost
条件を使用するとうまくいくはずです。
Anubhavaの answer に追加すると、localhostのadd要素を次の2つのエントリに置き換えて、localhostと127.0.0.1の両方に対応することができます。およびIIS
<add input="{HTTP_Host}" matchType="Pattern" pattern="^localhost(:\d+)?$" negate="true" />
<add input="{HTTP_Host}" matchType="Pattern" pattern="^127\.0\.0\.1(:\d+)?$" negate="true" />
元の答えでは、localhost:123はhttpsにリダイレクトされるため、望ましくない場合があります。