Web.config在将非www重定向到www时忽略所有子域

时间:2019-01-23 07:40:45

标签: azure redirect azure-web-sites

我正在使用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>

2 个答案:

答案 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>