【问题标题】:Web.config Redirect HTTP to HTTPS, excluding sub-domainsWeb.config 将 HTTP 重定向到 HTTPS,不包括子域
【发布时间】:2018-01-13 19:56:15
【问题描述】:

之前有人问过这个问题,我在自己问之前浏览了建议问题。不幸的是,我没有找到我需要的答案。

我在我的 Web.Config 文件中重写了用于将 TLD 域从 HTTP 重定向到 HTTPS。我遇到的问题是它也重定向了子域站点。我只希望 TLD 重定向而不是子域站点。

例如我有 www.example1.co.za 和 www.example2.com

我需要 http://www.example2.com 重定向到 https://www.example2.com,但不需要 http://a.example2.com 或 www.example2.com 的任何子域

它还必须保留http://example1.co.za 重定向到https://example1.co.za 的重定向规则

这是我的配置代码:

<rules>
    <clear />
    <rule name="Redirect to SSL for Mass" stopProcessing="true">
        <match url="(.*)" ignoreCase="true"/>
        <conditions logicalGrouping="MatchAll">
            <add input="{HTTP_HOST}" pattern="example1\.co\.za$" />
            <add input="{HTTPS}" pattern="^OFF$" />
        </conditions>
        <action type="Redirect" url="https://example1.co.za" />
    </rule>
    <rule name="Redirect to SSL for Pro" stopProcessing="true">
        <match url="(.*)" ignoreCase="true"/>
        <conditions logicalGrouping="MatchAll">
            <add input="{HTTP_HOST}" pattern="example2\.com$" />
            <add input="{HTTPS}" pattern="^OFF$" />
        </conditions>                         
        <action type="Redirect" url="https://example2.com" />
    </rule>
</rules>

编辑

我尝试添加另一个规则来排除子域。但是我收到错误:(

<rule name="Exclude Sub Sites from Pro HTTPS Rule" stopProcessing="true">
                    <match url="(.*)" ignoreCase="true"/>
                    <conditions logicalGrouping="MatchAll">
                        <add input="{HTTP_HOST}" pattern="^*\.example2\.com$" negate="true" />
                        <add input="{HTTPS}" pattern="^OFF$" />
                    </conditions>
                </rule>

【问题讨论】:

    标签: asp.net redirect url-rewriting web-config


    【解决方案1】:

    此规则将重定向:

    http://www.example.com 重定向到https://www.example.com

    http://example.com 重定向到https://example.com

    <rule name="Check SSL" stopProcessing="true">
        <match url="(.*)" />
        <conditions logicalGrouping="MatchAll">
            <add input="{HTTP_HOST}" pattern="^(www\.)?example\.com$" />
            <add input="{HTTPS}" pattern="^OFF$" />
        </conditions>                         
        <action type="Redirect" url="https://{HTTP_HOST}/{R:0}" />
    </rule>
    

    此正则表达式^(www\.)?example\.com$ 正在过滤主机不同于example.comwww.example.com 的请求

    【讨论】:

    • 这会排除子域吗?所以它不会重定向到 sub.example.com?只需要在我在 Live 网站上测试之前进行确认。
    • 是的,它将排除所有域,除了:example.com 或 www.example.com
    • 我对 2 个顶级域有 2 条规则。它还会排除其他域吗?请参阅已编辑的问题。
    • 根据此代码,我的其他域开始加载 http 前缀有什么想法吗?
    • 不,我不知道,您可以使用您的 web.config 规则创建一个新问题并尝试解释问题,我会尝试回答它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    • 2015-08-26
    • 2016-09-03
    • 2014-11-12
    相关资源
    最近更新 更多