在Express中使用vhost中间件指定按子域的路由
我正在使用vhost
快速/连接中间件,我有点困惑,应该如何使用。 我想要一组路由适用于具有子域名的主机,另一组则适用于没有子域名的主机。
在我的app.js文件中,我有
var app = express.createServer(); app.use...(middlware)... app.use(express.vhost('*.host', require('./domain_routing')("yes"))); app.use(express.vhost('host', require('./domain_routing')("no"))); app.use...(middlware)... app.listen(8000);
然后在domain_routing.js
:
module.exports = function(subdomain){ var app = express.createServer(); require('./routes')(app, subdomain); return app; }
然后在routes.js
我打算运行路线集,取决于是否传入的子域variables是"yes"
或"no"
。
我在正确的轨道上,还是这不是你如何使用这个中间件? 我有点困惑,有两个app
服务器实例被创build的事实(因为这是网上的例子似乎做的事情)。 我是否应该传递原始app
服务器实例,并使用它来代替创build一个单独的子域路由器?
是的,你在正确的轨道上。 您应该为每个虚拟主机有不同的服务器实例。 是一个http.Server
或express app
。
如果您通过原来的app
,您发送到虚拟主机的请求将被发送到原来的应用程序。 因此,除非虚拟主机具有在原始服务器中未使用的path,否则将得到响应,就像请求被发送到原始服务器一样。
从连接文档
connect() .use(connect.vhost('foo.com', fooApp)) .use(connect.vhost('bar.com', barApp)) .use(connect.vhost('*.com', mainApp))