HttpServletResponse sendRedirect永久

这将redirect一个临时的 302 HTTP状态码的请求:

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

但有可能redirect一个永久的 301 HTTP状态码?

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

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

sendRedirect()之前设置状态将不起作用,因为之后sendRedirect()会将其重写为SC_FOUND

我用下面的代码,但没有为我工作。

 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); 

这工作对我来说,我有同样的问题

如何在redirect时将状态设置为301