2017-02-20 18 views
0

私は数日前からGoogleにしようとしているソリューションを探していましたが、今私はここにいます。私は、エクスプレスサブドメインパッケージを使用して私のアプリケーションのサブドメインを設定しようとしています。しかし、以下の例では、appは常にapp.get routeを返し、指定された他のサブドメインのルートをスキップします。 私はホストファイルurlを追加しましたので、問題ではないはずです。Expressサブドメインルーティングが正しく機能していませんか。

oce.localhost:3000にアクセスしていても何らかの理由でDetect Regionルートが表示されてしまうことがあります。

私を助けてください:)

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としてかなりの名前です

乾杯

答えて

1

サブドメインをrouter変数に設定していますが、アプリに使用するよう指示していません。

あなたはそれを行う必要があります:

app.use(router); 

あなたの現在のapp.getの代わりにそれを置きます。


編集

それがデフォルトルートとして機能するように、またapp.use(router)後にapp.getを置くことができます。私はそれがexpress-vhostを使用して動作させることができました

さてさて、いくつかのテストの後


編集を(あなたがoceまたはnaにどちらもない場合は、それを使用します)。あなたの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); 
+0

それでも問題は同じですが、それでも問題はありません。それはいつもデフォルトルートに行くことに終わるようです。 – Elevant

+0

パッケージに問題があるのだろうかと疑問に思っていますが、別のパッケージを使う必要があるかもしれません。あなたは何かをお勧めしますか? – Elevant

+0

私は 'vhost'を使いました。しかし、あなたの問題は奇妙に思えます。私はそれをもう一度見て、あなたに教えてあげましょう。 – Telokis

関連する問題