Node.js Express.js条件路由器.all()

Node.js Express.js条件路由器.all(),node.js,express,Node.js,Express,我不明白为什么从2016开始的URL不起作用。它只是永远载入 main(/)、admin(/admin/*)和/home可以正常工作 function stringStartsWith(string, prefix) { return string.slice(0, prefix.length) == prefix; } router.get('/', csrfProtection, indexOnly, indexController.index); router.get('/admi

我不明白为什么从2016开始的URL不起作用。它只是永远载入

main
(/)
、admin
(/admin/*)
/home
可以正常工作

function stringStartsWith(string, prefix) {
  return string.slice(0, prefix.length) == prefix;
}

router.get('/', csrfProtection, indexOnly, indexController.index);

router.get('/admin', adminOnly, adminController.index);

router.all('/*', function(req, res, next) {
  if (req.originalUrl == '/home') {
    next();
  } else if (stringStartsWith(req.originalUrl, "/admin")) {
    router.all('/admin/*', function(req, res, next) {
      if (req.originalUrl == '/admin') {
        next(); // it doesn't do anything, just allows the route above to work (admin welcome page.)
      } else {
        res.sendFile(path.resolve('views/backend/index.html'));
      }
    });
  } else if (stringStartsWith(req.originalUrl, "/2016")) {
    router.all('/2016/*', function(req, res, next) {
      res.sendFile(path.resolve('views/frontend/index/index.html'));
    });
  } else {
    res.sendFile(path.resolve('views/frontend/index.html'));
  }
});

为什么把2016年的路线放在其他路线里面?它应该是另一条与其他路线类似的路线:

function stringStartsWith(string, prefix) {
  return string.slice(0, prefix.length) == prefix;
}

router.get('/', csrfProtection, indexOnly, indexController.index);

router.get('/admin', adminOnly, adminController.index);

router.all('/2016/*', function(req, res, next) {
    res.sendFile(path.resolve('views/frontend/index/index.html'));
});

router.all('/*', function(req, res, next) {
  if (req.originalUrl == '/home') {
    next();
  } else if (stringStartsWith(req.originalUrl, "/admin")) {
    router.all('/admin/*', function(req, res, next) {
      if (req.originalUrl == '/admin') {
        next(); // it doesn't do anything, just allows the route above to work (admin welcome page.)
      } else {
        res.sendFile(path.resolve('views/backend/index.html'));
      }
    });
  } else {
    res.sendFile(path.resolve('views/frontend/index.html'));
  }
});

你不应该在路由中添加另一条路由,这毫无意义,整个条件都是毫无意义的,应该删除。我的错,谢谢。我把它们分开了。