如何在Node.js / Express中进行重定向(301)?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Node.js / Express中进行重定向(301)?相关的知识,希望对你有一定的参考价值。
我有一个静态站点,一个简单的单页面布局,我在Dokku中部署。我需要从www到非www以及从*.website1.com
到website2.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'))
})
这是有效的版本,但没有重定向。
res.redirect(301, 'http://yourotherdomain.com' + req.path)
对于从谷歌到达这里的人来说,虽然@ frederic的答案仍然是快递文档所推荐的,但是response.send(status, body)
风格已经被弃用并且会产生警告(我在写作时的快递4.13.4),更重要的是我发现它在重定向时不再产生所需的结果。
正如@Markasoftware所提到的,要实现自动跟随301,您需要将位置标头设置为您想要的URL。请求正文可以为空:
response.set('location', 'https://my.redirect.location');
response.status(301).send()
据我所知,要设置HTTP 301代码,您可以将响应代码设置为301
,然后将Location
标头设置为您希望其重定向到的任何URL。我不认为这是非www网址的首选方式
以上是关于如何在Node.js / Express中进行重定向(301)?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Node.js、Express 和 Mongoose 进行身份验证?
如何在 node.js express 中的路由 end() 之后停止中间件序列继续进行
使用 Node.js、Handlebars 和 Express 进行模板继承