[英]Using different router for different subdomains in node.js with express
我想在我的應用程序中使用不同的路由,具體取決於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處理程序中。
有什么想法嗎?
您不能像在中間件中那樣動態使用app.use()
。 您可以直接使用domain1(req, res, next)
而不是app.use(domain1)
來呼叫路由器。
或者,您可能會考慮使用子域之類的模塊來簡化在Express中處理子域的過程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.