Перенаправление HTTP на HTTPS-IIS 8.5 работает неправильно

Я прочитал несколько сообщений здесь, так же, как и в сети (блоги 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 и после web.config перенаправляет не-www на www

3 ответов


редактировать: я нашел этот блог: 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>

мы столкнулись с той же проблемой при перенаправлении с http на https с помощью модуля перезаписи URL, но после отключения модуля require ssl в IIS сделал трюк.

  1. перейдите в настройки SSL веб-сайта
  2. снимите флажок "требовать SSL".
  3. Применить настройки и перезапустить iis

Это длинный выстрел для некоторых случаев, но я удалил свои привязки порта 80 для веб-сайта, поскольку я хотел только SSL / порт 443. Поэтому из того, что я могу сказать, привязка порта 80 также необходима для правильной работы перезаписи.