HttpServletResponse sendRedirect permanent

2022-08-31 14:45:22

这将重定向具有临时 302 HTTP 状态代码的请求:

HttpServletResponse response;
response.sendRedirect("http://somewhere");

但是是否可以使用永久的301 HTTP状态代码重定向它?


答案 1

您需要手动设置响应状态和标头。Location

response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
response.setHeader("Location", "http://somewhere/");

将状态设置为“之前”将不起作用,因为会将其覆盖到“之后”。sendRedirect()sendRedirect()SC_FOUND


答案 2

我使用了以下代码,但不适合我。

String newURL = res.encodeRedirectURL("...");
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
response.sendRedirect(newURL);

然后我尝试了这段代码,它为我工作

String newURL = res.encodeRedirectURL("...");
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
response.setHeader("Location", newURL);

这对我有用,我有同样的问题

如何在重定向时将状态设置为 301


推荐