[英]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)
以便将其用作默认路由。 (当您不在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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.