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 ) => {