web-dev-qa-db-ja.com

HTTPからHTTPSへのリダイレクト-IIS 8.5が正しく機能していません

SOだけでなく、ネット(IISブログなど)でも多くの投稿を読んだことがあります。)forceしようとしていますdomain.comからwww.domain.comへのすべての接続と同時に、HTTPからHTTPSへの要求を強制します。

私はこの一連のルールと書き換えを使用していますが、起こっていることは、それが正常にリダイレクトしているがSSLにリダイレクトしていないことです。

<!-- Redirect to HTTPS -->
<rewrite>
    <rules>
        <rule name="Redirect to www" stopProcessing="true">
            <match url="(.*)" />
            <conditions trackAllCaptures="false">
                <add input="{HTTP_Host}" matchType="Pattern" pattern="^mydomain.com$" ignoreCase="true" negate="false" />
            </conditions>
            <action type="Redirect" url="{MapProtocol:{HTTPS}}://www.mydomain.com/{R:1}" />
        </rule>
    </rules>
    <rewriteMaps>
        <rewriteMap name="MapProtocol" defaultValue="http">
          <add key="on" value="https" />
          <add key="off" value="http" />
        </rewriteMap>
    </rewriteMaps>
</rewrite>

何が悪いのですか?

メインブログリファレンス: http://weblogs.asp.net/owscott/url-rewrite-protocol-http-https-in-the-action and this SO= post- web.configが非wwwをwwwにリダイレクト

8
Valien

編集:それで、私はこのブログ投稿を見つけました: http://www.meltedbutter.net/wp/?p=231 そして、それを試してみました!魅力のように働いた。これが上記のルールで機能した理由はわかりませんが、私の場合、以下は機能しており、すべての非wwwトラフィックを正常に取得して両方にリダイレクトしていますwwwおよびhttps

<!-- Redirect to HTTPS -->
        <rewrite>
            <rules>
                <rule name="http to https" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions>
                        <add input="{HTTPS}" pattern="^OFF$" />
                    </conditions>
                    <action type="Redirect" url="https://www.domain.com/{R:1}" redirectType="SeeOther" />
                </rule>
            </rules>
        </rewrite>
12
Valien

URL書き換えモジュールを使用してhttpからhttpsにリダイレクトするときに同じ問題に直面しましたが、IIS内のrequire sslモジュールをオフにした後、トリックを行いました。

  1. ウェブサイトのSSL設定に移動します
  2. [SSLが必要]チェックボックスをオフにします。
  3. 設定を適用してiisを再起動する
4

これは一部のケースではロングショットですが、SSL /ポート443のみが必要だったため、Webサイトのポート80バインディングを削除しました。したがって、書き換えが正しく機能するにはポート80バインディングも必要です。

1
Enkode