2012-05-25 35 views
4

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

入站规则如下。

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 

在此先感谢。 任何帮助,将不胜感激。

在此先感谢。

回答

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> 

如果任HTTPSONHTTP_HOSTwww.domainname.com会重定向。只有两者都是真的,它才会重定向。

+0

感谢Marco,我加了你的帮助!!!但这并不能满足我的要求。请在我的主要问题中检查我的要求。我已经更新了“需求”部分,更加清晰。 在此先感谢。 – shakti

+0

我认为它满足您的所有要求,但这是由于HTTPS的本质。如果您的SSL证书是“* .domainname.com”的通配符证书,或者它是“www.domainname.com”和“beta.domainname.com”的多域证书,则您的第一项要求才可用。如果您的证书仅对'www.domainname.com'有效,则当您打开“https:// beta.domainname.com”时,它会导致浏览器显示安全警告。没有什么是你或IIS可以做的。 –