Node.js Express-为不同的子域设置不同的路由

Node.js Express-为不同的子域设置不同的路由,node.js,express,routing,subdomain,Node.js,Express,Routing,Subdomain,我有一个应用程序运行,我想有不同的路由不同的子域。这就是我尝试过的: app.get('*', function(req, res, next){ if(req.headers.host == 'sub.example.com') { //if it's a sub-domain app.use('/', sub_routes); }else{ app.use('/', routes); } next(); }); 但这似乎并没有真正起作用。我得到一个404错误

我有一个应用程序运行,我想有不同的路由不同的子域。这就是我尝试过的:

app.get('*', function(req, res, next){
  if(req.headers.host == 'sub.example.com') { //if it's a sub-domain
    app.use('/', sub_routes);
  }else{
    app.use('/', routes);
  }
  next();
});

但这似乎并没有真正起作用。我得到一个404错误。当我设置
app.use('/',routes)时在该块之外,路由可以工作,但是我不能基于子域设置它们。我猜问题在于我试图在一个已经设置好的路由中定义路由,但我不确定如何有条件地设置这些路由。我怎样才能做到这一点呢?

我从来没有用过这个,但你试过了吗

看起来它完美地覆盖了您的用例


您也可以在每个子域中使用不同的节点进程,并在nginx或Apache中执行到适用进程的路由。

我已经尝试过使用此方法,但无法在localhost上使用它。我已将子域添加到主机文件中。因此,在这种情况下,是解决计算机上的主机问题还是解决计算机上的模块问题。如果我使用这个模块,它在我的生产环境中工作得很好。在我的计算机上,我的主机文件条目如下所示
127.0.0.1 localhost subdomain.localhost
。但是模块没有将
子域
识别为子域。我能够在本地完成这项工作。这是我问的另一个问题,解释了我是如何做到的。