Web.config将HTTP重定向到HTTPS,不包括子域

时间:2017-08-06 10:43:25

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

之前已经问过这个问题,在我自己询问之前,我已经浏览了建议问题。不幸的是,我没有遇到我要求的答案。

我已在我的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>

1 个答案:

答案 0 :(得分:2)

此规则将重定向:

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