expressjs路由以匹配特定的URL

时间:2013-06-08 12:32:03

标签: node.js express

我需要匹配2条路线。

此路线/*的含义是什么? 。意味着路线如http://localhost:3000/#/

路线检查。

如果路由是/ login或/ register等,则首先点击它,否则/ *

1 - 路由,例如/ login或/ register

app.get('What Here', function(req, res){
    res.redirect(req.url);
})

2 - 路线如/

app.get('/*', function(req, res){
    res.redirect('/');
})

1 个答案:

答案 0 :(得分:2)

要走的路是:

app.get('/login', function (req, res) {
    //login user
});

对于注册,类似的东西

app.get('/register', function (req, res) {
    //register user
});

最后,对于其他所有内容,您只需执行以下操作:

app.get(/^\/(.*)/, function (req, res) {
    //everything else
});

显然,您必须将前两个路径定义放在最后一个路径定义之前。 您甚至可以通过req.params [0]访问网址的最后一部分。例如,如果网址为http://localhost:3000/#/,则req.params [0]将包含“#/”

有关详细信息,请查看Organize routes in Node.js

编辑:根据您的评论,假设您希望在每条路线上处理“多页”,您可以执行以下操作:

app.get('/login/:id', function (req, res) {
    //login user with id = id
    //The value of id = req.params.id
});

除此之外,要处理以'/ login /'开头的任何路由,请尝试此正则表达式:

app.get(/^\/login\/(.*)/, function (req, res) {
    //handles route like '/login/wefnwe334'
});