2017-01-07 89 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); 
    } 
}); 

這是我能想到的最好的解決方案。我希望它能幫助別人。