重定向位置但不是URL

时间:2014-07-26 17:11:07

标签: redirect express

如何在不重定向vanilla Express中的URL的情况下将用户重定向到其他路由?例如,如果我有路线

express = require('express');
app = express();

app.route('/old').get(function(req, res, next) {
    res.redirect('/new');
});

app.route('/new').get(function(req, res, next) {
    res.send('This is the new route');
});

app.listen(3000);

我将浏览器指向http://localhost:3000/old,应用程序成功重定向,页面显示为This is the new route,但网址也已更改为http://localhost:3000/new。如何让应用程序重定向到new路由,但保留旧网址(http://localhost:3000/old)?

我很好安装另一个中间件(就好像我还没有一百万个),但理想情况下,我想在没有额外中间件的情况下这样做。另外,我在Express.js中完全这样做,没有PHP,nginx或其他任何东西。我将在我的应用程序中使用Angular.js,但这似乎更像是服务器端行为,而不是客户端行为。我有时会在客户端进行重定向,但我不想一直这样做。

3 个答案:

答案 0 :(得分:11)

而不是重定向,如何使用request module

发送获取请求

并进行回调以更新内容。

var request = require('request');

app.route('/old').get(function(req, res, next) {

  request.get('/new', function(err, response, body) {
    if (!err) {
      req.send(body);
    }
  });         
});

答案 1 :(得分:0)

您可以使用两种路线都可以使用的辅助方法:

express = require('express');
app = express();

const newHandler = function(req, res, next) {
    res.send('This is the new route');
};
app.route('/old').get(newHandler);
app.route('/new').get(newHandler);

app.listen(3000);

请注意,req.urlnewHandler内部对于两种不同的路线将有所不同,因此您可能需要处理。

答案 2 :(得分:-1)

试试这个

var request = require('request');
    app.get('/old', function(req, res) {
      request.get('new', function(err, response, body) {
        if (!err) {
         res.send(body);
        }
      });
    });