2017-01-07 72 views
0

我设计一个社区网站,将允许用户登录,并通过以下途径别人交好,他们的帐户将可以访问:Express.JS - 动态路径别名

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使用相同的路线回调。

第二个任务是与/users/:username更换/id/:userid

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

非常感谢。

回答

0

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

我可以用星号来捕获所有其他的URL,然后使用一个简单的正则表达式替换呼叫的用户名,以更换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); 
    } 
}); 

这是我能想到的最好的解决方案。我希望它能帮助别人。