私は、ディレクトリにマッピングされるサブドメインを設定する方法を提供するhttpd(Apache)での作業に慣れています。 Connect.js/Express.jsで同じことを行うにはどうすればよいですか?私が持っている唯一のものは、サブドメインを設定するためにどのように使用できるかわからないルートです。 m.mysite.com、sync.mysite.comなどのサブドメインがあります
誰か助けてもらえますか?
または、代わりにvhost
を使用できます。
次に、独自のディレクトリにいくつかのサイトを作成し、エクスプレスアプリをエクスポートします。 /path/to/m/index.js
:
var app = express()
/* whatever configuration code */
exports.app = app
// There is no need for .listen()
そして、次のアプリですべてのリクエストを処理します。
var vhost = require('vhost');
express()
.use(vhost('m.mysite.com', require('/path/to/m').app))
.use(vhost('sync.mysite.com', require('/path/to/sync').app))
.listen(80)
ご了承ください /path/to/m
および/path/to/sync
は、上記の絶対パスまたは相対パスです。
リクエストにサブドメインを追加して、その後のnext()
呼び出しでサブドメインをチェックできます。
私は次のコードを取得しました> http://groups.google.com/group/express-js/browse_thread/thread/b04bbaea7f0e8eed (元の著者への完全なクレジット)
app.get('*', function(req, res, next){
if(req.headers.Host == 'some.sub.domain.com') //if it's a sub-domain
req.url = '/mysubdomain' + req.url; //append some text yourself
next();
});
// This will mean that all get requests that come from the subdomain will get
// /subdomain appended to them, so then you can have routes like this
app.get('/blogposts', function(){
// for non-subdomain
});
app.get('/mysubdomain/blogposts', function(){
// for subdomain
});
私は最近この問題に遭遇し、エクスプレス4を使用してそれを支援するモジュールを作成しました。 https://www.npmjs.org/package/express-subdomain 。
例-APIサブドメイン。
var express = require('express');
var app = express();
var router = express.Router();
//api specific routes
router.get('/', function(req, res) {
res.send('Welcome to our API!');
});
router.get('/users', function(req, res) {
res.json([
{ name: "Brian" }
]);
});
app.use(subdomain('api', router));
app.listen(3000);
Npmのモジュールをチェックして、他の例を確認してください。
Expressのサブドメインを支援するモジュールを作成しました: https://github.com/WilsonPage/express-subdomain-handler