我一直在寻找几天的解决方案,现在试图谷歌和所有,现在我在这里。我正在尝试使用express-subdomain包为我的应用设置子域名。但是在下面的示例中,app始终返回app.get路由并跳过指定的其他子域路由。 我还反过来添加了hosts文件URL,所以我知道这不应该是问题。
由于某种原因,它必须在我的代码中,即使在访问oce.localhost:3000时它总是显示检测区域路由。
请帮帮我:)。
Server.js
var subdomain = require('express-subdomain');
var express = require('express');
var app = express();
// Region routes
var router = express.Router();
var na = require('./routes/region/na.js');
var oce = require('./routes/region/oce.js');
router.use(subdomain('na.localhost', na));
router.use(subdomain('oce.localhost', oce));
app.get('/', function(req, res) {
res.send('Detect Region and send to correct subdomain!');
});
app.listen(3000);
路由/区域/ oce.js
var
express = require('express'),
router = express.Router();
router.get('/', function(req, res) {
res.send('Your are in OCE Region!');
});
module.exports = router;
而na.js就是oce.js的名字
干杯
答案 0 :(得分:1)
您要在router
变量中设置子域名,但不要告诉您的应用使用它。
你必须这样做:
app.use(router);
您将其替换为当前的app.get
。
<小时/> 的修改
您也可以将app.get
放在app.use(router)
之后,以便它可以作为默认路线。 (当您不在oce
或na
时,它将使用它)
<小时/> 经过一些测试后修改
好吧,我已经能够使用express-vhost
使其工作了。我刚才更新了你的server.js
:
var subdomain = require('express-vhost');
var express = require('express');
var app = express();
// Region routes
var router = express.Router();
var na = require('./routes/region/na.js');
var oce = require('./routes/region/oce.js');
subdomain.register('na.localhost', na)
subdomain.register('oce.localhost', oce)
app.use(subdomain.vhost(app.enabled('trust proxy')));
app.get('/', function(req, res) {
res.send('Detect Region and send to correct subdomain!');
});
app.listen(3000);