【问题标题】:HTTP to HTTPS Redirect - IIS 8.5 not working properlyHTTP 到 HTTPS 重定向 - IIS 8.5 无法正常工作
【发布时间】:2015-08-12 13:24:09
【问题描述】:

我已经阅读了一些关于 SO 和 'net 的帖子(IIS 博客等)。我正在尝试强制从 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 和这篇 SO 帖子 - web.config redirect non-www to www

【问题讨论】:

  • 除了配置错误外,别忘了在 Chrome 的隐身窗口中进行实验,否则您的 301 重定向将被缓存。每次尝试新的隐身窗口时,您都需要关闭并启动一个新的隐身窗口。

标签: redirect iis iis-8.5


【解决方案1】:

在某些情况下,这是一个很长的尝试,但我已经删除了网站的端口 80 绑定,因为我只想要 SSL / 端口 443。所以据我所知,重写工作还需要端口 80 绑定正确。

【讨论】:

  • 这对我有用。我使用另一个 http 端口 2021 发布了我的网站,并删除了 http 的默认 80 端口绑定。添加回来对我有用。
【解决方案2】:

我们在使用 URL Rewrite 模块从 http 重定向到 https 时遇到了同样的问题,但是在关闭 IIS 中的 require ssl 模块之后就成功了。

  1. 转到网站的 SSL 设置
  2. 取消选中需要 SSL 复选框。
  3. 应用设置并重启 iis

【讨论】:

  • 这对我来说是个问题
【解决方案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>

【讨论】:

  • redirectType="seeOther" 是解决方案。它毁了我的一天。
  • 这在我的 3 台服务器中的任何一台上都不起作用。
猜你喜欢
  • 2016-03-09
  • 2017-03-04
  • 2020-01-11
  • 2016-08-23
  • 2011-12-22
  • 2020-01-16
  • 1970-01-01
  • 2017-04-17
  • 1970-01-01
相关资源
最近更新 更多