2017-11-19 7 views
2

익스프레스 서브 도메인 라우팅에 https://github.com/bmullan91/express-subdomain을 사용하려고합니다. 다음은 내 main.js 및 src/routes/site 파일의 내용입니다. 서브 도메인을 취급하는 익스프레스 서브 도메인

const express = require('express'); 
const bodyParser = require('body-parser'); 
const subdomain = require('express-subdomain'); 

const siteRouter = require('./src/routes/site'); 

const app = express() 

app.use(express.json()); 
app.use(express.urlencoded()); 
app.use(express.static('public')); 
app.use(subdomain('*.www', siteRouter)); 

app.get('/', function(req, res) { 
    res.send('Homepage'); 
}); 

const server = app.listen(80,'x3.loc', function() { 
    var host = server.address().address; 
    var port = server.address().port; 
    console.log('X3 listening at http://%s:%s', host, port); 
}); 


const express = require('express'); 

let router = express.Router(); 

router.get('/', function(req, res) { 
    res.send('Welcome to site'); 
}); 

module.exports = router; 

app.use(subdomain('*.www', siteRouter));을하는이 방법은 https://github.com/bmullan91/express-subdomain/issues/33에서 제안되었지만 작동하지 않습니다

.

나는 또한 *뿐만 아니라 하위 도메인으로 시도했지만 그로 인해 하위 도메인이없는 홈페이지도 발생 했으므로 마찬가지로 처리됩니다. 이걸 어떻게 작동시킬 수 있니?

+0

미들웨어를 재정렬 했습니까? 그것은 귀하의 경우처럼, 미들웨어 처리 홈 페이지는 하위 도메인 하나 앞에 배치해야합니다. – Vasan

+0

@Vasan 성공적으로 결과를 얻지 못하고'app.use (subdomain ('*. www', siteRouter));'행을'const server = ...'로 바로 옮겨 보았습니다. –

+0

도메인/하위 도메인 구조를 제공 할 수 있습니까? 즉 기본 도메인과 일치시킬 일부 샘플 하위 도메인 – Vasan

답변

1

/은 하위 도메인에 관계없이 기본 경로와 일치한다는 것을 알고 있습니다.

app.use(subdomain('*', siteRouter));

이 홈페이지 미들웨어를 만드는 :

다음
app.get('/', function(req, res,next) { 
    /* If there are any subdomains, skip to next handler, since request is not for the main home page */ 
    if (req.subdomains.length > 0) { 
     return next(); 
    } 
    res.send('Homepage'); 
}); 

내가 다음 홈페이지 미들웨어과 같이 하위 도메인에 대한 미들웨어를 배치 : 그래서 "하위 도메인 인식"과 같이 홈페이지 미들웨어를 만든 x3.loc 및 서브 도메인 미들웨어에 대한 요청을 처리하여 api.x3.loc 또는 api.v1.x3.loc과 같은 하위 도메인에 대한 요청을 처리합니다.

제 의견으로는 실제 수정은 모듈에서 수행되어야합니다. 비어있는 req.subdomains이 처리되는 경우 또는 *이 반복을 건너 뛰지 않고 실제 문자열과 일치하도록 변경해야한다고 생각합니다.

버그 33에서 제안 된 수정 사항이 기자에게있는 그대로 작동 한 것이 놀랍습니다. 테스트에서 반대로 작동합니다. 즉 www.example.com은 하위 도메인 미들웨어로 이동하고 stat1.example.com은 홈페이지 미들웨어로 이동합니다. 아마 기자가 이것을보고 미들웨어 시체를 교환했을 것입니다.