这将使用一个临时302 HTTP状态码重定向请求:
HttpServletResponse response;
response.sendRedirect("http://somewhere");
但是是否可以使用永久的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);
sendError()
方法需要状态码作为参数,而sendRedirect()
方法则不需要。无论当前状态如何,sendRedirect()
都会默认设置 302 状态码。 - BalusCresponse.flushBuffer();
- z12345