url重写时的重定向循环

Redirection loop when url rewriting

我试图避免为我的着陆页设置 2 个不同的 url,因此我想将未指定区域性 (www.example.com) 的着陆页重定向到 www.example.com/en-us

我想要实现的是将以 example.com 结尾的链接重定向到 example.com/en-us

这是我在 web.config 中的规则:

    <rule name="Redirect to En Us" stopProcessing="true">
      <match url=".*" />
      <conditions>
        <add input="{HTTP_HOST}" pattern="example.com$" />
      </conditions>
      <action type="Redirect" url="/en-us" redirectType="Permanent" />
    </rule>  

但即使 url 没有以 example.com

结尾,它也会陷入重定向循环

更新:

这不会陷入循环,但也不会重定向(似乎正则表达式根本不匹配,但为什么?):

<rule name="Redirect to En Us" stopProcessing="true">
  <match url="example.com$" />
  <action type="Redirect" url="/en-us" redirectType="Permanent" />
</rule>  

好吧,我终于明白了。我只需要告诉如果 url (不包括主机名)为空则重定向:

<rule name="Redirect to En Us" stopProcessing="true">
  <match url="^$" />       
  <action type="Redirect" url="/en-us" redirectType="Permanent" />
</rule>  

您可能还需要查找尾部斜杠,但在我的情况下,因为我已经有一个删除尾部斜杠的规则,所以这不是问题。