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);
}
});
这是我能想到的最好的解决办法。我希望它能帮助其他人