使用express将不同的路由器用于node.js中的不同子域

马奇罗

我想在我的应用程序中使用不同的路由,具体取决于req.headers.host中的子域。

所以我想到了这个想法(极端简化的示例):

var express     = require('express');
var domain1     = require('./routes/domain1');
var domain2     = require('./routes/domain2');

var app   = express();

app.use('*', domainRouting);

function domainRouting(req, res, next){
  var subdomain = req.headers.host.split('.')[0];

  if(subdomain === 'domain1'){
    app.use(domain1);
  }
  else{
    app.use(domain2);
  }
  next();
}

//404 handler
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  res.send('error');
});

var server = app.listen(3001, function() {
    console.log('Listening on port %d', server.address().port);
});

domain1.js:

var express   = require('express');
var router    = express.Router();

router.get('/', function(req, res) {
  res.send('DOMAIN 1: ' + req.url);
});

module.exports = router;

domain2.js:

var express   = require('express');
var router    = express.Router();

router.get('/', function(req, res) {
  res.send('DOMAIN 2: ' + req.url);
});

module.exports = router;

但这是行不通的,路由会被忽略,请求会跳到最后一个404处理程序中。

有什么想法吗?

mscdex

您不能app.use()像在中间件中那样动态使用您可以直接用domain1(req, res, next)代替呼叫路由器app.use(domain1)

或者,您可能会考虑使用子域之类的模块来简化在Express中处理子域的过程。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将中间件路由器用于Express Node.js中的子路径

来自分类Dev

nginx:将不同的服务器用于不同的路径

来自分类Dev

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

来自分类Dev

如何将不同的子域指向同一服务器上的不同应用程序?(使用node.js作为代理吗?)

来自分类Dev

如何在Flask中设置不同的子域(使用蓝图)?

来自分类Dev

在Plesk中具有不同端口的子域

来自分类Dev

GCP-不同环境中的HTTPS和子域

来自分类Dev

子域的 NGINX 不同配置

来自分类Dev

不同环境的 Rails 子域

来自分类Dev

一个Next.js路由中的两个不同子域

来自分类Dev

不同子域的不同社交元预览

来自分类Dev

Azure Web App-将不同的外部域路由到“站点”中的不同目录

来自分类Dev

Node Express 4中的路由器

来自分类Dev

如何在Django REST中不将路由器用于视图集,而是用于通用视图?

来自分类Dev

不同子域使用相同的URL

来自分类Dev

将不同端口上的Django应用链接到子域

来自分类Dev

对不同的Firebase项目使用apex域和子域

来自分类Dev

如何根据条件将不同的比较器用于优先级队列

来自分类Dev

网关使用与路由器不同的子网

来自分类Dev

流星路由器可用于多种布局,以在家中使用不同的布局

来自分类Dev

在Express应用中为不同的端口使用不同的路由

来自分类Dev

未在不同子域上设置会话

来自分类Dev

laravel中的子域路由

来自分类Dev

在同一类+依赖项注入中将不同的Serilog接收器用于不同的目的

来自分类Dev

如何在 Node JS 中使用 express 创建控制器和路由器

来自分类Dev

DDD:将域分为不同程序集中的子域

来自分类Dev

域和子域之间的会话变量不同

来自分类Dev

Google Cloud Run不同时支持域和子域

来自分类Dev

Node.js和Wordpress的Apache代理位于相同的“域”中,但路径不同

Related 相关文章

  1. 1

    如何将中间件路由器用于Express Node.js中的子路径

  2. 2

    nginx:将不同的服务器用于不同的路径

  3. 3

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

  4. 4

    如何将不同的子域指向同一服务器上的不同应用程序?(使用node.js作为代理吗?)

  5. 5

    如何在Flask中设置不同的子域(使用蓝图)?

  6. 6

    在Plesk中具有不同端口的子域

  7. 7

    GCP-不同环境中的HTTPS和子域

  8. 8

    子域的 NGINX 不同配置

  9. 9

    不同环境的 Rails 子域

  10. 10

    一个Next.js路由中的两个不同子域

  11. 11

    不同子域的不同社交元预览

  12. 12

    Azure Web App-将不同的外部域路由到“站点”中的不同目录

  13. 13

    Node Express 4中的路由器

  14. 14

    如何在Django REST中不将路由器用于视图集,而是用于通用视图?

  15. 15

    不同子域使用相同的URL

  16. 16

    将不同端口上的Django应用链接到子域

  17. 17

    对不同的Firebase项目使用apex域和子域

  18. 18

    如何根据条件将不同的比较器用于优先级队列

  19. 19

    网关使用与路由器不同的子网

  20. 20

    流星路由器可用于多种布局,以在家中使用不同的布局

  21. 21

    在Express应用中为不同的端口使用不同的路由

  22. 22

    未在不同子域上设置会话

  23. 23

    laravel中的子域路由

  24. 24

    在同一类+依赖项注入中将不同的Serilog接收器用于不同的目的

  25. 25

    如何在 Node JS 中使用 express 创建控制器和路由器

  26. 26

    DDD:将域分为不同程序集中的子域

  27. 27

    域和子域之间的会话变量不同

  28. 28

    Google Cloud Run不同时支持域和子域

  29. 29

    Node.js和Wordpress的Apache代理位于相同的“域”中,但路径不同

热门标签

归档