基于IIS重写语言的规则和默认语言

基于IIS重写语言的规则和默认语言

我想创建一个基于用户浏览器语言的 IIS 重写规则,但仅针对一组特定的语言。

我们的网站提供英语 (en)、法语 (fr) 和荷兰语 (nl) 版本。我可以创建以下重写规则:

<rule name="Redirect short url to long url: NEW SYNTAX 2017-11-01" stopProcessing="true">
    <match url="^([_0-9a-z-]+)$" />
    <conditions>
        <add input="{HTTP_HOST}" pattern="mydomain\.be$" />
        <add input="{HTTP_ACCEPT_LANGUAGE}" pattern="^(en|fr|nl)?" />
    </conditions>
    <action type="Redirect" url="https://www.myotherdomain.be/{C:1}/projects/{R:1}?type=shorturl" appendQueryString="false" redirectType="Found" />
</rule>

当我将浏览器配置为三种指定语言(en/nl/fr)之一时,此方法可正常工作。例如 URLhttp://mydomain.be/测试将重定向至https://www.myotherdomain.be/nl/projects/test?type=shorturl(当我的浏览器配置为荷兰语时)。

但是当我将浏览器配置为“ru”时,相同的 url 将重定向到https://www.myotherdomain.be//projects/test?type=shorturl

对于任何其他语言,我想将长 URL 默认为 /en/ 而不是 // 有没有办法使用 IIS 重写规则来做到这一点?

提前感谢任何指导!

答案1

有关信息:我通过添加一条捕获所有重写规则解决了我的问题,该规则将所有请求重定向到单个 .aspx 页面。在此 .aspx 页面中,我可以使用后端代码中的 C# 处理正确的重定向逻辑。

相关内容