使用Node.js和Express将非wwwredirect到www

我正在服务一个静态目录,如下所示:

var app = express.createServer(); app.configure(function(){ app.use(express.static(__dirname + '/public')); }); 

所以我根本不使用路由。 我想将example.comredirect到www.example.com,可以使用Express吗?

是。 这应该做到这一点。

 var express = require("express"); var app = express.createServer(); var port = 9090; app.all(/.*/, function(req, res, next) { var host = req.header("host"); if (host.match(/^www\..*/i)) { next(); } else { res.redirect(301, "http://www." + host); } }); app.use(express.static(__dirname + "/public")); app.listen(port); 

或者,您可以使用现成的快速模块来完成您想要的function,例如node-force-domain。

有关详细信息,请参阅https://github.com/goloroden/node-force-domain

以下代码在redirect时保留path

例如: http : //foo.com/foo到http://www.foo.com/foo

  var app = express.createServer(); self.app.all(/.*/, function(req, res, next) { var host = req.header("host"); if (host.match(/^www\..*/i)) { next(); } else { res.redirect(301, "http://www." + host + req.url); } }); app.use('/',express.static('public')); 

你可以使用npm的express-force-domain包:

 //install npm install express-force-domain ///app.js app.all('*', require('./express-force-domain')('http://www.example.com') ); 

打包在npm上: https ://npmjs.org/package/express-force-domain