【问题标题】:Rewrite Rule https://www to https:// IIS7将规则 https://www 重写为 https:// IIS7
【发布时间】:2011-09-18 05:45:47
【问题描述】:

我在提供的共享主机上收到了我的 ssl 证书,并成功安装了它。该证书是为 mysite.com 准备的,而不是为 *.mysite.com 准备的。 我希望该站点可以像 https 一样访问:// mysite.com – 没有 www,没有 http(只有安全连接)。我在这里找到了类似的问题,但不是正确的问题。 我正在使用 IIS 7,.net 环境。我的 web.config 添加了以下规则:

<rule name="Remove WWW prefix">
<match url="(.*)" ignoreCase="true" />
<conditions>
    <add input="{HTTP_HOST}" pattern="^www\.mysite\.com" />
</conditions>
<action type="Redirect" url="https://mysite.com/{R:1}" redirectType="Permanent" />
</rule>

<rule name="Redirect to HTTPS">
<match url="(.*)" />
<conditions>
    <add input="{SERVER_PORT}" pattern="443" negate="true" />
</conditions>
<action type="Redirect" url="https:// mysite.com/{R:1}" />

一切正常,但 URL https://www.mysite.com 未重定向到 https://mysite.com。我收到证书适用于 mysite.com 的错误(这是预期的 :),消息来自 firefox)并建议添加异常。

我的问题是这个网址的适当规则是什么?

提前感谢您的宝贵时间。

【问题讨论】:

    标签: asp.net-mvc iis-7 ssl url-rewriting ssl-certificate


    【解决方案1】:

    这两条规则对我有用。

        <rule name="Remove WWW" stopProcessing="true">
        <match url="^(.*)$" />
        <conditions>
            <add input="{HTTP_HOST}" pattern="^(www\.)(.*)$" />
        </conditions>
        <action type="Redirect" url="http://mysite.com{PATH_INFO}" redirectType="Permanent" />
    </rule>
    <rule name="Redirect to HTTPS" stopProcessing="true">
        <match url="(.*)" />
        <conditions>
            <add input="{HTTPS}" pattern="^OFF$" />
        </conditions>
        <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" />
    </rule>
    

    补充阅读:

    http://www.jppinto.com/2010/03/automatically-redirect-http-requests-to-https-on-iis7-using-url-rewrite-2-0/

    http://keyvan.io/remove-www-prefix-from-urls-with-url-rewrite-module-for-iis-7-0

    【讨论】:

      【解决方案2】:

      编辑:对不起,我想我看错了你的帖子!我给了你一个规则,让你自动从 http 转到 https。我会把它留在这里,以防它帮助其他(比如我)也无法阅读的人,你可以调整它以使其适合你的情况。

      阅读 Omar Al Zabir 的这篇文章:http://omaralzabir.com/redirecting-traffic-from-http-to-https-with-zero-coding-in-iis/

      然后看看我 (Tom Chantler) 对他的帖子的评论。

      【讨论】:

      • 欣赏这是一个老问题,但上述说明对我来说非常有效。此外,可以将需要重定向的任何进一步绑定添加到虚拟站点(例如 www.mysite.com),然后该虚拟站点还将重定向到指定的域,从而解决 OP 问题
      【解决方案3】:

      很遗憾,我认为您无法做到这一点。您需要https://www.mysite.com 上的有效 SSL 证书才能重定向到 https://mysite.com,而不会警告用户证书无效。 IIS 将在 URL 重写有机会对其进行操作之前尝试协商 SSL 连接。

      您可以使用 DNS 条目来执行此操作。您可以添加如下所示的 CNAME 条目:

      www.mysite.com.   CNAME   mysite.com.
      

      【讨论】:

      • 完全正确——浏览器会在连接完全建立之前显示警告信息。
      • 好的,我明白了。我可能错了,但是如果这是我可以用特定页面处理的错误(这又会导致重定向),是否可以进行一些 DNS 重定向甚至更好?
      • 非常感谢,我已经要求进行此更改,一两天后我们会知道这是否可行:)
      • 它也不是那样发生的。我有一个像你建议我添加的 A 记录,我用 cname 替换它。更改很快生效,但我再次没有被重定向到 https://mysite.com。我感谢你的努力。总而言之:目前我找不到这样做的方法。
      猜你喜欢
      • 2020-11-28
      • 2011-09-15
      • 1970-01-01
      • 1970-01-01
      • 2014-12-16
      • 2017-12-04
      • 1970-01-01
      • 2015-08-12
      • 1970-01-01
      相关资源
      最近更新 更多