我正在尝试使用规则,语言标识符位于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>
任何出错的想法?
答案 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}
,它都匹配(.*)
(因为它匹配任何/所有内容)。