39

フォームから URL を書き換えようとしています:

https://example.com/about

フォームへ

http://example.com/about

IIS7 URL 書き換えを使用:

<!-- http:// to https:// rule -->
<rule name="ForceHttpsBilling" stopProcessing="true">
  <match url="(.*)billing/(.*)" ignoreCase="true" />
  <conditions>
    <add input="{HTTPS}" pattern="off" ignoreCase="false" />
  </conditions>
  <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}{REQUEST_URI}" />
</rule>

<!-- https:// to http:// rule -->    
<rule name="ForceNonHttps" stopProcessing="true">
  <match url="(.*)billing/(.*)" ignoreCase="true" negate="true" />
  <conditions>
      <add input="{SERVER_PORT}" pattern="^443$" />
  </conditions>
  <action type="Redirect" redirectType="Found" url="http://{HTTP_HOST}{REQUEST_URI}" />
</rule>

私は途方に暮れています。私は例を求めてウェブを閲覧し、考えられるすべての構文を試してきました。私が指定した書き換えルールは、すべてのリクエストが書き換えエンジンから完全に見えないかのように、どの https リクエストに対してもまったく機能していないように見えます。https://

ルールは正常に機能します。以下の回答を参照してください。

4

4 に答える 4

28

ポート :443 が別の Web サイトにバインドされていることがわかりました。

上記の書き換えルールは、http:// から https:// への書き換え、およびその逆の書き換えで正常に機能しますが、より最適な方法や簡単な方法があるかもしれません。

Web 上で https:// から http:// への書き換えシナリオの良い例があまり見られなかったため、この質問はここに残しておきます。

于 2009-10-08T08:11:06.203 に答える
8

この投稿は少し古いですが、私は答えたかったです。ASP.Net MVC3 を使用していますが、上記の Fabio の回答はうまくいきませんでした。有効な https ページが安全なコンテンツを要求できるようにしながら、http への https リダイレクトを処理するために私が思いついた最も簡単な解決策は、https/http リダイレクトの上にホワイトリスト ルールを追加することでした。

    <rule name="WhiteList - content folder" stopProcessing="true">
      <match url="^content/"/>
      <conditions logicalGrouping="MatchAll" trackAllCaptures="false"/>
      <action type="None"/>
    </rule>
    <rule name="Redirect to HTTPS" stopProcessing="true">
      <match url="(.*)billing/(.*)" ignoreCase="true" />
      <conditions>
        <add input="{HTTPS}" pattern="^OFF$" />
      </conditions>
      <action type="Redirect" url="https://{HTTP_HOST}/billing/" redirectType="SeeOther" />
    </rule>
    <rule name="ForceNonHttps" stopProcessing="true">
      <match url="(.*)billing/(.*)" ignoreCase="true" negate="true" />
      <conditions>
        <add input="{SERVER_PORT}" pattern="^443$" />
      </conditions>
      <action type="Redirect" redirectType="Found" url="http://{HTTP_HOST}{REQUEST_URI}" />
    </rule>
于 2012-09-26T18:01:11.013 に答える