繁体   English   中英

Express-子域路由无法正常工作?

[英]Express-subdomain routing not working correctly?

我一直在寻找解决方案,现在尝试使用Google及其它,现在我在这里。 我正在尝试使用express-subdomain包为我的应用设置子域。 但是,在下面的示例中,应用程序始终返回app.get路由,并跳过指定的其他子域路由。 我也依次添加了主机文件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一样

干杯

您可以在router变量中设置子域,但不要告诉您的应用使用它。

您必须这样做:

app.use(router);

您将其替换为当前的app.get


编辑

您也可以将app.get放在app.use(router)以便将其用作默认路由。 (当您不在ocena ,它将使用它)


经过一些测试后编辑

好了,我已经能够使用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); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM