如何在Node.js / Express中进行重定向(301)?

时间:2014-06-10 22:31:32

标签: javascript node.js redirect express

我有一个静态站点,我在Dokku中部署的简单单页面布局。我需要从www到非www以及从*.website1.comwebsite2.com进行重定向(301),但我不知道如何。我试图在npm中使用express-force-domain但它使我的URL变得疯狂并且有一些重定向循环,我正在尝试其他方法,我在网上找到但没有成功。

我的server.js是:

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

app.set('port', (process.env.PORT || 80))
app.use(express.static(__dirname + '/public'))

app.get('/', function(request, response) {
  response.send('Hello World!')
})

app.listen(app.get('port'), function() {
  console.log("Node app is running at localhost:" + app.get('port'))
})

这是可行的版本,但没有重定向。

3 个答案:

答案 0 :(得分:32)

res.redirect(301, 'http://yourotherdomain.com' + req.path)

请参阅Express documentation

答案 1 :(得分:10)

对于从谷歌到达此处的任何人,虽然@ frederic的答案仍然是快递文档的建议,但response.send(status, body)样式已被弃用并将产生警告(我在快递4.13.4时)写作),更重要的是我发现它在重定向时不再产生预期的结果。

正如@Markasoftware所提到的,为了实现自动跟踪301,您需要将位置标头设置为您想要的URL。请求正文可以为空:

   response.set('location', 'https://my.redirect.location');
   response.status(301).send()

答案 2 :(得分:0)

据我了解,要设置HTTP 301代码,您可以将响应代码设置为301,然后将Location标头设置为您希望其重定向到的任何网址。我不认为这是非www网址的首选方式,但