Windows Server 2012
我有1个IIS容器,一个域名有4个不同的URL,一共有2个域名,如下图所示(设置了绑定关系
www.site1.comsite1.comwww.site1.co.uksite1.co.uk
www.site2.comsite2.comwww.site2.co.uksite2.co.uk www.site1.com - 是主域,这意味着上述URL的任何组合都必须将用户带到www.site1.com或www.site2.com。
我有下面的规则,它将这些网站带到主网址上
<rule name="PrimarySite" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" pattern="site1.co.uk" />
<add input="{HTTP_HOST}" pattern="www.site1.co.uk" />
<add input="{HTTP_HOST}" pattern="site1.com" />
</conditions>
<action type="Redirect" url="http://www.site1.com/{R:0}" />
</rule>
我现在想同样的,但对于HTTPs,所以添加了一个新的规则(只是为网站1,但我会做同样的网站2)。
<rule name="site1HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions trackAllCaptures="true" logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" pattern="site1.co.uk" />
<add input="{HTTP_HOST}" pattern="www.site1.co.uk" />
<add input="{HTTP_HOST}" pattern="site1.com" />
<add input="{HTTPS}" pattern="off" />
</conditions>
<action type="Redirect" url="https://{C:1}{REQUEST_URI}" appendQueryString="false" redirectType="Permanent"/>
</rule>
当我添加这个我收到一个重定向循环错误,并尝试了不同的组合,但它似乎并不工作。
我错过了什么(我有总规则)?
对3个{HTTP_HOST}和{HTTPS}使用MatchAny会把重定向逻辑搞乱。
你可以把3个条件合并成一个,这样{HTTP_HOST}和{HTTPS}就可以和 "MatchAll "并排使用。
<rule name="test">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="(site1|site2)\.(com|co.uk)" />
<add input="{HTTPS}" pattern="^off$" />
</conditions>
<action type="Rewrite" url="https://{HTTP_HOST}{REQUEST_URI}" />
问好,Sam