2017-11-19 3 views
2

expressのサブドメインルーティングにhttps://github.com/bmullan91/express-subdomainを使用しようとしています。私のmain.jsとsrc/routes/siteファイルの内容は次のとおりです。サブドメインを処理するexpress-subdomain

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

ミドルウェアの並べ替えを試しましたか?あなたの場合のように、ミドルウェアを扱うホームページは、サブドメイン1の前に置く必要があります。 – Vasan

+0

@Vasan私は成功した結果を得ず、 'app.use(subdomain( '*。www'、siteRouter));'行を 'const server = ...'の直前に移動しようとしました。 –

+0

ドメイン/サブドメイン構造を提供できますか?つまりメインドメインと一致させたいサブドメインのサンプル – Vasan

答えて

1

/は、サブドメインに関係なくすべての基本パスに一致します。だから私はそうのように自分のホームページのミドルウェア「サブドメインを意識し、」作っ:

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'); 
}); 

その後、私はそうのような下記ホームページミドルウェアサブドメインのためのミドルウェアを置い:

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

これはホームページのミドルウェアを作りますx3.locとサブドメインミドルウェアの要求を処理して、api.x3.locまたはapi.v1.x3.locのようなサブドメインの要求を処理します。

私の意見では、実際の修正はモジュールで行う必要があります。空であるreq.subdomainsが処理されるか、*が実際の文字列と照合されるように変更する必要があると思います。

私は、バグ33で提案された修正がレポーターのために働いていたことに驚いています。私のテストでは逆の動作、つまりwww.example.comはサブドメインミドルウェアに、stat1.example.comはホームページミドルウェアに移動します。おそらく、記者がこれを見て、ミドルウェアの本体を交換したのかもしれません。


関連する問題