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

Tom*_*Tom 9 node.js express

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

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

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

Pet*_*ons 10

是.这应该做到这一点.

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);
Run Code Online (Sandbox Code Playgroud)


kar*_*ivi 10

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

例如:http://foo.com/foohttp://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'));
Run Code Online (Sandbox Code Playgroud)


Gol*_*den 8

或者,您可以使用现成的Express模块​​来完成您想要的操作,例如node-force-domain.

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