express 处理子域名的路由
发布于 7 年前 作者 Harveytwo 3687 次浏览 来自 分享

express 中的路由机制默认不会把子域名考虑在内: 如:app.get(’/about’) ,会处理对应的 a.com/about , www.a.com/about , admin.a.com/about , api.a.com/about 的请求。 如果想分开处理子域名,可以使用 vhost 包(表示 “虚拟主机”,源自 Apache 的机制,一般用来处理子域名)。 先安装这个包 npm i vhost --save , 然后编辑相应代码处理子域名:

// 创建子域名 “admin” ,它应该出现在所有其他路由之前
var admin = express.Router();
app.use(vhost('admin.*'), admin);

// 创建 admin 的路由,它们可以在任何地方定义
admin.get('/', function(req, res) {
	res.render('admin/home')
});
admin.get('/users', function(req, res) {
	res.render('admin/users')
})

express.Router() 本质上是创建了一个新的 Express 路由器实例。可以像对待原始实例(app)那样对它:像对 app 那样给它添加路由和中间件。然而将它添加到 app 上之前,它什么也不会做。我们通过 vhost 添加它,将那个路由器实例绑到那个子域名。

2 回复

为什么要用子域名呢 子域名相对应不应该是一个独立的站点吗

@falost 使用子域名可以用于区分 api 、前端和后台管理,这时如果是同个域名,就需要用到子域名了

回到顶部