私のウェブサイトには2つのバインディングがあります:1000と1443(ポート80/443は同じIIS instance)。ポート1000はHTTP、ポート1443はHTTPS。「htt p:// server:1000」を使用して着信要求をリダイレクトし、 "https://server:1443"
。 IIS 7 rewrite module 2.0で遊んでいますが、壁に頭をぶつけています。洞察力は大歓迎です!
ちなみに、以下の書き換え構成は、ポート80にHTTPバインディングがあり、ポート443にHTTPSバインディングがあるサイトではうまく機能しますが、私のポートでは機能しません。
追伸「スパム防止メカニズム」が作動したため、私のURLには意図的にスペースが含まれています。何らかの理由でgoogleログインが機能しなくなったため、OpenIDアカウントを作成する必要がありました(スクリプトが原因ではない可能性があります)。 XMLを適切に表示する方法がわからないので、左角かっこの後にスペースを追加しました。
< ?xml version="1.0" encoding="utf-8"?>
< configuration>
< system.webServer>
< rewrite>
< rules>
< rule name="HTTP to HTTPS redirect" stopProcessing="true">
< match url="(.*)" />
< conditions trackAllCaptures="true">
< add input="{HTTPS}" pattern="off" />
< /conditions>
< action type="Redirect" redirectType="Found" url="htt ps: // {HTTP_Host}/{R:1}" />
< /rule>
< /rules>
< /rewrite>
< /system.webServer>
< /configuration>
質問は少し前に回答されましたが、これは私が使用した規則です。
<rule name="Redirect to HTTP on different port" enabled="true" stopProcessing="true">
<match url="(.*)"/>
<conditions>
<add input="{HTTPS}" pattern="ON"/>
</conditions>
<!-- Cannot Use {HTTP_Host} as it contains both the {SERVER_NAME}{SERVER_PORT} -->
<action type="Redirect" url="http://{SERVER_NAME}:1000{HTTP_URL}" redirectType="Found" appendQueryString="false"/>
</rule>
<rule name="HTTP to HTTPS on different SSL Port" enabled="true" stopProcessing="true">
<match url="(.*)" ignoreCase="true" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="true">
<add input="{HTTPS}" pattern="off" />
<add input="{HTTP_Host}" pattern="([^/:]*?):[^/]*?" />
</conditions>
<action type="Redirect" url="https://{C:1}:1443/{R:0}" appendQueryString="false" />
</rule>
これは私の問題を解決しました。
これを変更してみてください:
<action type="Redirect" redirectType="Found" url="https://{HTTP_Host}/{R:1}"/>
これに:
<action type="Redirect" redirectType="Found" url="https://{HTTP_Host}:1443/{R:1}"/>