Express路由 – 基于区域设置的redirect

我正在尝试为我的多语言网站设置路由。 我的目标是根据他的语言(已经被检测到)来redirect用户。

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

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(); }); 

在这个例子中,我尝试从url( urlLang )中减去请求的语言。 如果该语言与用户语言不匹配,则应redirect到正确的URL。

我试图达到的几个例子:

  • 用户使用语言en请求/ :不redirect
  • 用户使用语言nl请求/ :redirect到/nl
  • 具有语言en请求/foo/bar :无redirect
  • 用户使用语言nl requests /foo/bar :redirect到/nl/foo/bar

我目前的代码只适用于请求的path是//:lang ,但不适用于像/home/nl/home这样的路由。 我不明白这是如何实现与快递。 任何帮助都感激不尽!


请注意我已经设置了一切,比如语言检测,翻译逻辑,视图等。我只是询问路由。

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

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