Express JS重定向到默认页面而不是“无法获取”

时间:2014-08-09 08:40:15

标签: node.js express

我正在使用快速JS,我有一组路由,我已经定义如下

require('./moduleA/routes')(app);
require('./moduleB/routes')(app);

等等。如果我尝试访问我在上述路线中未定义的任何路线,请说

http://localhost:3001/test

它说

Cannot GET /test/

但不是这样,我想重定向到我的应用程序的索引页面。我希望这个重定向发生在所有未定义的路由上。我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:27)

尝试添加以下路线作为最后一条路线:

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

<强> 编辑:

经过一番研究后,我得出结论,最好使用app.get代替app.use

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

因为app.use处理所有HTTP方法(GETPOST等),并且您可能不希望将未定义的POST请求重定向到索引页

答案 1 :(得分:2)

JUst尝试将所有获取处理程序(如下所示)放在get处理程序*之后。

app.get('/', routes.getHomePage);//When `/` get the home page

app.get('/login',routes.getLoginPage); //When `/login` get the login page

app.get('*',routes.getHomePage); // when  any other of these both then also homepage.

但请确保*毕竟是{1}},否则这些将无法在*处理程序之后运行。

答案 2 :(得分:0)

HTML 文件将是:

      ApplicationUser ApplicationUser = await _userManager.GetUserAsync(HttpContext.User);

        if (!await _userManager.IsInRoleAsync(ApplicationUser , "Admin"))
        {
                  var list = await _context.Books 
                        .Where( b=>  b.UserId==ApplicationUser.UserId
                              && b.State== BookUtils.States.ACTIVE )
                       .AsNoTracking()
                       .ToListAsync();
              return View(list);
       }  
return ...else

您的 Node.js 代码将是:

<form class="" action="/fail" method="post">
        <button type="submit" name="button">Redirect to Homepage!</button>
</form>