IIS 7.5に追加されたURL Rewrite 2.0モジュールを使用して、Webサイト上のすべてのトラフィックにHTTPSを使用するように強制しようとしています。それが機能するようになったので、SSLの使用からいくつかのページを除外する必要があります。そのため、このフォルダーをHTTPSに参照するURLを除くすべてのURLを書き換えるルールが必要です。私はこれで頭を壁にぶつけて、誰かが助けてくれることを望んでいます。この例のように、nosslサブフォルダー内のURLを除くすべてのURLに一致するルールを作成してみました。
<rule name="HTTP to HTTPS redirect" enabled="true" stopProcessing="true">
<match url="(/nossl/.*)" negate="true" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTPS}" pattern="off" />
</conditions>
<action type="Redirect" url="https://{HTTP_Host}/{R:1}" redirectType="Found" />
</rule>
しかし、これは機能しません。誰でも助けることができますか?
誰かが好奇心が強い場合は、次の構文でこの問題を解決しました。
<rule name="NoSSL - folder" enabled="true" stopProcessing="true">
<match url="^nossl/.*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
</conditions>
<action type="None" />
</rule>
<rule name="Redirect to HTTPS" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTPS}" pattern="off" />
</conditions>
<action type="Redirect" url="https://{HTTP_Host}/{R:1}" redirectType="Found" />
</rule>
私はパーティーに少し遅れていますが、この構文を提案したいと思います。
<rule name="Redirect to HTTPS except /nossl/ folder" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{REWRITE_URI}" url="^nossl/.*" negate="true" />
<add input="{HTTPS}" pattern="off" />
</conditions>
<action type="Redirect" url="https://{HTTP_Host}/{R:1}" redirectType="Found" />
</rule>