2017-01-07 12 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 

どのように私はいつも/users/:username/id/:useridからリダイレクトが、URLの残りの部分を維持することができます?

最初のタスクは、同じルートコールバックを使用するためにすべてのURLを/id/:useridと照合しています。

第2のタスクは、/id/:userid/users/:usernameに置き換えることです。

正規表現でこれらの2つのタスクを達成できますか?

ありがとうございました。

答えて

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); 
    } 
}); 

これは私が考えることができる最高の解決策です。他の人に役立つことを願っています。

関連する問題