Regex Express.JS-动态路由别名

Regex Express.JS-动态路由别名,regex,node.js,express,replace,Regex,Node.js,Express,Replace,我正在设计一个社区网站,允许用户登录并与他人成为朋友,他们的帐户可以通过以下途径访问: https://domain.com/en/community/id/:userid AND https://domain.com/en/community/users/:username 然而,我希望用户总是使用第一个URL,因为它看起来更美观。我可以直接从ID路径重定向,但对于计划中的朋友和组,我最终会得到如下URL: https://domain.com/en/community/id/:userid

我正在设计一个社区网站,允许用户登录并与他人成为朋友,他们的帐户可以通过以下途径访问:

https://domain.com/en/community/id/:userid AND
https://domain.com/en/community/users/:username
然而,我希望用户总是使用第一个URL,因为它看起来更美观。我可以直接从ID路径重定向,但对于计划中的朋友和组,我最终会得到如下URL:

https://domain.com/en/community/id/:userid/friends
https://domain.com/en/community/users/:username/friends
https://domain.com/en/community/id/:userid/groups
https://domain.com/en/community/users/:username/groups
如何始终从
/id/:userid
重定向到
/users/:username
,但保留URL的其余部分

第一个任务是将所有URL与
/id/:userid
匹配以使用相同的路由回调

第二项任务是将
/id/:userid
替换为
/users/:username

这两个任务可以通过正则表达式实现吗


非常感谢。

好的,事实证明允许用户ID别名非常简单

我可以使用星号捕获所有其他URL,然后使用简单的RegExp replace调用将ID替换为用户名

app.get('/:lang/community/id/:id/*', function(req, res){
    var id = req.params.id;
    User.getByID(id, function(err, result, user){
        var url = req.url.replace(new RegExp('/id/'+id, 'g'), '/users/'+user.name);
        res.redirect(url);
    }
});
这是我能想到的最好的解决办法。我希望它能帮助其他人