IIS URL重写默认语言路径

时间:2013-07-28 17:09:11

标签: iis url-rewriting

我正在尝试使用规则,语言标识符位于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>

任何出错的想法?​​

1 个答案:

答案 0 :(得分:1)

将您的规则更改为:

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

它将检查网址是否以en/开头,如果不是,则会在请求的路径前附加en/

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