19

誰かが HTTP プロトコル経由でリクエストを行うたびに、URL を書き直して HTTPS にします。これは web.config のコードです。

<rule name="Imported Rule 1-1" enabled="true" stopProcessing="true">
    <match url="^(?!https://).*" ignoreCase="false" />
    <conditions logicalGrouping="MatchAll">
        <add input="{SERVER_PORT}" pattern="80" ignoreCase="false" />
    </conditions>
    <action type="Rewrite" url="https://abc.com/{R:1}" />
</rule> 

ただし、http:// を参照すると IIS エラーが発生します

HTTP エラー 500.50 - URL 書き換えモジュール エラー。式"https://abc.com/{R:1}"は展開できません。

どうすればこれを解決できますか? 私は完全に混乱しています。

4

2 に答える 2

20

一致はゼロベースです。

<action type="Rewrite" url="https://abc.com/{R:1}" />

一致するものが 1 つしかないため、機能しません。必要なもの:

<action type="Rewrite" url="https://abc.com/{R:0}" />

また、サイトのルートの下のパスでしか一致できないため、これは機能しません。

<match url="^(?!https://).*" ignoreCase="false" />

sslをチェックしているようです。代わりにこれを試してください:

      <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{HTTPS}" pattern="^OFF$" />
      </conditions>
于 2012-03-30T21:06:58.767 に答える