4

目前,在我的生产服务器上,我有如下的入站规则集,它可以满足我的所有要求。

入站规则如下。

Match URL section
Requested URL: Matches the Pattern
Using: Regular Expression
Pattern: (.*)
Ignore Case: checked.

Conditions section
Logical grouping: Match All.
Input: {HTTPS}
Type: Matches the Pattern
Pattern: ^OFF$
Track capture groups across conditions: unchecked.

Action section:
Action type: Redirect
Redirect URL: https://www.domainname.com/{R:0}
Append query string: checked.
Redirect Type: Permanent (301).

我的要求是:当用户输入

https://beta.domain.com it should redirect to https://www.domain.com. 

如果用户输入

http://beta.domain.com it should redirect to https://www.domain.com. 

如果用户键入

http://www.domain.com it should redirect to https://www.domain.com

如果用户键入

http://domain.com it should redirect to https://www.domain.com

提前致谢。任何帮助,将不胜感激。

提前致谢。

4

1 回答 1

3

这不正是条件假设要做的吗?它检查 HTTPS 是否关闭,然后才会发生重定向。如果 HTTPS 处于打开状态,则不应重定向,否则您将最终陷入无休止的重定向。

如果您总是希望主机名成为www.domainname.com您应该将其添加为附加条件。例如:

<rule name="Force HTTPS and host name: www.domainname.com" stopProcessing="true">
    <match url="(.*)" />
    <conditions logicalGrouping="MatchAny">
        <add input="{HTTPS}" negate="true" pattern="^ON$" />
        <add input="{HTTP_HOST}" negate="true" pattern="^www\.domainname\.com$" />
    </conditions>
    <action type="Redirect" url="https://www.domainname.com/{R:0}" appendQueryString="true" redirectType="Permanent" />
</rule>

如果HTTPS不是或不是它将重定向。只有当两者都为真时,它才不会重定向。ONHTTP_HOST www.domainname.com

于 2012-05-25T13:56:12.237 回答