用于重定向无效路由的正确状态代码

问题描述

我设置了以下路线:

/business //look for a business
/business/biz/:id //look at a specific business

我所做的是,如果有人去/business/biz,它将重定向/business。 我的问题是我应该使用什么状态代码? 我不认为这是301302,因为它不是永久性的举动,也不是暂时的,它只是一个页面,不存在一致重定向到特定页面的情况。>

//get /business/biz page
router.get("/biz",(req,res) => {
  res.redirect("/business");
});

我在Stack Overflow上查看了不同的问题,但没有找到与我的情况相符的情况。

解决方法

要在/business/biz上重定向/business,您应该返回一个308 Permanent Redirect
这是维基百科关于状态308的引用:

该请求和所有以后的请求应使用另一个URI重复。 307和308的行为与302和301的行为相似,但但不允许更改HTTP方法。因此,例如,向永久重定向的资源提交表单可能会继续顺利

您还应该检查this answer来说明301308302307之间的区别,并且写得很好。

,

建议仅将301代码用作GETHEAD方法的响应,并将308永久重定向用于POST方法代替。

查看完整的文章here