使用Koa进行子域路由?

时间:2015-04-23 20:42:05

标签: node.js subdomain koa

我希望能够做到以下几点:

mydomain.com/this/that

应该以不同方式重定向:

a.sub.domain.mydomain.com/this/that

我看到Express有以下内容:

github.com/bmullan91/express-subdomain

Koa确实有一个:

github.com/demohi/koa-subdomain

你可以看到它已经死了。无论如何使用Koa实现这一目标?

2 个答案:

答案 0 :(得分:5)

你可以写一个子域名 - 中间件来实现这个目标。

var koa = require('koa');
var app = koa();


routeMain = function *(next) {
    this.body = 'mydomain.com';
};


routeSub = function *(next) {
    this.body = 'sub.mydomain.com';
};


// subdomain middleware
subdomain = function (domain,route){
    return function *(next){
        var s=this.subdomains[0] || '';
        if (s === domain) {
            yield route.call(this,next);
        }
        else{
            yield next;
        }
    };
};


app.use(subdomain('sub', routeSub));
app.use(subdomain('', routeMain));

app.use(function *(next){
    console.log("done");
});


app.listen(3000);

答案 1 :(得分:1)

我很自豪能够展示我的第一个koa中间件

Koa-Sub-Domain

受express-subdomain的启发,但对通配符有一些更大的灵活性,并使用生成器函数而不是路由器。 它被开发用于Koa-router!