我正在使用web.config将所有非www重定向到正常工作的www。如何添加规则以忽略所有子域,以便http://example.com重定向到http://www.example.com,但是任何子域http://*.example.com或http://one.example.com都不会重定向到www。 (我无法添加子域列表。)
<rule name="Redirect to www">
<match url=".*" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" pattern="^(www\.)(.*)$" negate="true" />
</conditions>
<action type="Redirect" url="http://www.{HTTP_HOST}" redirectType="Permanent"/>
</rule>
答案 0 :(得分:1)
我认为Joey的答案仅涉及域名以 .com 结尾的情况,无法处理 .co.uk .co.za .com.au 等。您可以扩展正则表达式多一点,但是使用 [az] 允许不同类型的域也将最终导致子域重定向,这是您不希望看到的题。
因此,要实现这一目标,您必须处理您认为可能会遇到的具体情况。
<rule name="Redirect to www">
<match url=".*" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" pattern="^([a-z-]+[.](com|co|ca|net)([.](uk|sg|au)){0,1})$" negate="false" />
</conditions>
<action type="Redirect" url="http://www.{HTTP_HOST}" redirectType="Permanent"/>
</rule>
您可以根据自己的喜好修改正则表达式。
答案 1 :(得分:0)
您可以尝试使用以下代码:
<rules>
<rule name="Redirect to www">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^example\.com$" negate="true" />
<add input="{HTTP_HOST}" pattern="^one\.example\.com$" negate="true" />
</conditions>
<action type="Redirect" url="http://www.{HTTP_HOST}/{R:0}"/>
</rule>
</rules>