为不同的子域名设置不同的路由 - Express

6

我有一个应用程序正在运行,我希望对不同的子域名使用不同的路由。这是我尝试过的:

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); 时,路由可以工作,但是我无法根据子域名设置它们。我猜问题在于我正在尝试在已经设置好的路由内定义路由,但我不确定如何有条件地设置这些路由。我该怎么做才能实现这一点?

1个回答

4

我从未使用过这个,但你尝试过https://www.npmjs.org/package/express-subdomain吗?

它似乎完美地解决了你的问题。

你也可以为每个子域使用不同的Node进程,并在nginx或Apache中对适用的进程执行路由。


我尝试使用这个,但是在本地主机上无法使其工作。我已经将子域名添加到我的主机文件中。 - jordan
那么在这种情况下,问题是出现在您的计算机上解析主机还是模块上? - Evan Shortiss
在我的机器上,如果我使用这个模块,在生产环境中它能够很好地工作。在我的机器上,我的主机文件条目看起来像这样 127.0.0.1 localhost subdomain.localhost。但是该模块无法将 subdomain 识别为子域名。 - jordan
我能够在本地使其工作。这是另一个我提出的问题,解释了我如何做到这一点。问题链接 - jordan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接