Перенаправить не-www на www с Node.js и Express - PullRequest
9 голосов
/ 03 февраля 2012

Я работаю со статическим каталогом так:

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

Так что я вообще не использую маршруты. Я хотел бы перенаправить example.com на www.example.com, возможно ли это с помощью Express?

Ответы [ 4 ]

10 голосов
/ 27 сентября 2016

Следующий код сохраняет путь при перенаправлении

Пример: 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'));
9 голосов
/ 04 февраля 2012

Да.Это должно сделать это.

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);
8 голосов
/ 25 августа 2012

В качестве альтернативы, вы можете использовать готовый модуль для Express, который делает именно то, что вы хотите, например, узел силы домена.

Подробнее см. https://github.com/goloroden/node-force-domain.

2 голосов
/ 06 октября 2012

Вы можете использовать пакет express-force-domain из npm:

//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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...