web-dev-qa-db-ja.com

特定のサブフォルダー内のファイルを除き、httpからhttpsへのURL書き換え

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>

しかし、これは機能しません。誰でも助けることができますか?

6
BrettRobi

誰かが好奇心が強い場合は、次の構文でこの問題を解決しました。

<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>
9
BrettRobi

私はパーティーに少し遅れていますが、この構文を提案したいと思います。

<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>
2
Darkseal