我正在使用快速JS,我有一组路由,我已经定义如下
require('./moduleA/routes')(app);
require('./moduleB/routes')(app);
等等。如果我尝试访问我在上述路线中未定义的任何路线,请说
http://localhost:3001/test
它说
Cannot GET /test/
但不是这样,我想重定向到我的应用程序的索引页面。我希望这个重定向发生在所有未定义的路由上。我怎样才能做到这一点?
答案 0 :(得分:27)
尝试添加以下路线作为最后一条路线:
app.use(function(req, res) {
res.redirect('/');
});
<强> 编辑: 强>
经过一番研究后,我得出结论,最好使用app.get
代替app.use
:
app.get('*', function(req, res) {
res.redirect('/');
});
因为app.use
处理所有HTTP方法(GET
,POST
等),并且您可能不希望将未定义的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>