使用Node.js和Express将非www重定向到www

时间:2012-02-03 17:33:07

标签: node.js express

我正在提供一个静态目录,如下所示:

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

所以我根本不使用路线。我想将example.com重定向到www.example.com,这是否可以使用Express?

4 个答案:

答案 0 :(得分:10)

以下代码在重定向时保留路径

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

{{1}}

答案 1 :(得分:9)

是。这应该做到。

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

答案 2 :(得分:8)

或者,您可以使用现成的Express模块​​,它可以完全满足您的需求,例如:节点力域。

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

答案 3 :(得分:2)

您可以使用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