0

我正在尝试使语言标识符位于 url 路径中的规则起作用。如果未指定语言,我们希望将 url 强制为 en 版本。例如:

www.domain.com/page.aspx 应该重定向到 www.domain.com/en/page.aspx

这是我们到目前为止的规则,但它一直以重定向循环结束。

<rule name="Default Language" stopProcessing="true">
        <match url="(.*)" />
        <conditions>                
            <add input="{REQUEST_URI}" pattern="^/(en|es|ph)/" negate="true" ignoreCase="true" />
        </conditions>
        <action type="Redirect" url="/en/{R:1}" redirectType="Permanent" />
    </rule>

有什么想法会出错吗?

4

1 回答 1

1

将您的规则更改为:

<rule name="Default Language" stopProcessing="true">
    <match url="^en/" negate="true" />
    <action type="Redirect" url="/en/{R:0}" redirectType="Permanent" />
</rule>

它将检查 url 是否以开头,en/如果不是,它将附加en/在请求路径的前面。

您有一个无限重定向,因为无论发送到什么反向引用/en/{R:1},它都是匹配(.*)的(因为它匹配任何/所有内容)。

于 2013-07-30T20:49:33.643 回答