web.config通过HTTP和HTTPS重定向多个别名

时间:2015-04-17 20:08:41

标签: http redirect https asp-classic web-config

我的应用程序有多个别名,所有这些别名都需要重定向到我们的新别名。根据我目前的规则,我能够使重定向工作,但只能在一个协议或另一个协议中,而不是两者。

例如,我的web.cong规则如下所示:

<rule name="Redirect_Alias_1" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
    <match url="*" />
    <conditions>
        <add input="{HTTP_HOST}" pattern="*example1.com" />
    </conditions>
    <action type="Redirect" url="http://example2.com" />
</rule>

但是如果用户试图访问我们的HTTPS版本的example2,他们会被重定向回HTTP版本。如何编写规则以使协议无关紧要?

1 个答案:

答案 0 :(得分:0)

尝试2条规则,每条规则都有条件检查HTTPS服务器变量。

<rule name="Redirect_Alias_1" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
    <match url="*" />
    <conditions>
        <add input="{HTTPS}" pattern="OFF" />
        <add input="{HTTP_HOST}" pattern="*example1.com" />
    </conditions>
    <action type="Redirect" url="http://example2.com" />
</rule>
<rule name="Redirect_Alias_2" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
    <match url="*" />
    <conditions>
        <add input="{HTTPS}" pattern="ON" />
        <add input="{HTTP_HOST}" pattern="*example1.com" />
    </conditions>
    <action type="Redirect" url="https://example2.com" />
</rule>