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>
您可能还需要查找尾部斜杠,但在我的情况下,因为我已经有一个删除尾部斜杠的规则,所以这不是问题。
我试图避免为我的着陆页设置 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>
您可能还需要查找尾部斜杠,但在我的情况下,因为我已经有一个删除尾部斜杠的规则,所以这不是问题。