快速路由 - 基于区域设置的重定向

时间:2017-06-12 13:00:40

标签: javascript node.js express routing localization

我正在尝试为我的多语言网站设置路由。我的目标是根据用户的语言(已经检测到)重定向​​用户。

这是我目前尚未完成的代码:

app.get('/(:lang)?', (req, res, next) => {
    const urlLang = req.params.lang || 'en'; // English is default
    const userLang = 'nl'; // Will be detected

    if (urlLang !== userLang) {
        // Wrong URL
        res.redirect(userLang + req.url);
    } else next();
});

在此示例中,我尝试从网址(urlLang)中减去所请求的语言。如果该语言与用户语言不匹配,则应将其重定向到正确的URL。

我想要实现的一些例子:

  • 语言为en的用户请求/:无重定向
  • 语言nl的用户请求/:重定向到/nl
  • 语言为en的用户请求/foo/bar:无重定向
  • 语言nl的用户请求/foo/bar:重定向到/nl/foo/bar

我的当前代码仅在请求的路径为//:lang时有效,但不适用于/home/nl/home等路由。我不知道如何通过快递实现这一目标。任何帮助将不胜感激!

请注意我已经设置了其他所有内容,例如语言检测,翻译逻辑,视图等。我只询问路由。

1 个答案:

答案 0 :(得分:1)

如果您知道需要提前支持的所有语言标识符,那么这应该有效:

api.get('/(:lang(en|nl)/)?*', ( req, res, next ) => {