我正在设计一个允许用户登录并与他人成为朋友的社区网站,并且可以通过以下路线访问他们的帐户:
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
,但保留其余的网址?
第一项任务是将所有网址与/id/:userid
匹配,以使用相同的路由回调。
第二项任务是将/id/:userid
替换为/users/:username
。
使用正则表达式可以实现这两项任务吗?
非常感谢。
答案 0 :(得分:0)
好的,事实证明允许用户ID别名非常简单。
我可以使用星号捕获所有其他URL,然后使用简单的RegExp替换调用将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);
}
});
这是我能想到的最佳解决方案。我希望它可以帮助其他人。