如何将多个子域redirect到同一个运行快速应用程序

我正在NodeJS中构build一个SaaS应用程序,并使用Express框架。 该网站的个人成员有一个自定义子域名的urllogin。

例如,一家名为ABC Corp的公司可能会在abc.example.comlogin,另一家名为Sony的公司可能会在sony.example.comlogin

任何想法如何redirect/路由多个子域到同一个应用程序实例?

你实际上可以处理那个特定的路线或范围广泛,然后去Reg Exp (它允许你做这个app.get(new RegExp('(your|string)\/here'), function… ),你要redirect然后按照下面的代码所做的那样执行redirect操作:

 response.writeHead(302, { 'Location': 'yourpath/page.html' //add other headers here... }); response.end(); 

更新1 :[根据评论和其他更新]

然后,您尝试使用以下应用处理所有请求:

 express() .use(express.vhost('abc.example.com', require('/path/to/loginApp').app)) .use(express.vhost('sony.example.com', require('/path/to/loginApp').app)) .listen(80) 

其中/path/to/loginApp可以是绝对path或相对path。

我希望这能解决你的问题。

更新2

实际上,当一个请求进来时,请求事件在HTTP服务器上产生。 所以基本上它是通过express来处理的, express.vhost是一个中间件函数,它在HTTP服务器的另一个实例上引发请求事件,也就是如何工作。

以下是代码:

 function vhost(req, res, next){ if (!req.headers.host) return next(); var host = req.headers.host.split(':')[0]; if (req.subdomains = regexp.exec(host)) { req.subdomains = req.subdomains[0].split('.').slice(0, -1); server.emit('request', req, res); } else { next(); } };