Java中的URL重定向返回302而不是301

Java中的URL重定向返回302而不是301,java,redirect,http-status-code-301,Java,Redirect,Http Status Code 301,我正在使用以下代码重定向url: response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY); response.sendRedirect(newURL); 我看到的是正确的重定向,但响应中返回的值是302而不是301。如何将其强制设置为301?如果使用sendRedirect,它会将状态重置为302。您必须使用setHeader将位置标头设置为使用301状态重定向 示例代码: response.setStatus(Http

我正在使用以下代码重定向url:

  response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
  response.sendRedirect(newURL);

我看到的是正确的重定向,但响应中返回的值是302而不是301。如何将其强制设置为301?

如果使用
sendRedirect
,它会将状态重置为302。您必须使用setHeader将位置标头设置为使用301状态重定向

示例代码:

response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
response.setHeader("Location", "http://somewhere/");
从这个答案中可以看出:

我添加了以下内容:response.setHeader(“Location”,newUrl);setHeader(“连接”、“关闭”);但是它不工作发现问题:)它现在工作了,我忘了删除response.sendRedirect(newURL);对不起,伙计们!嗯,实际上sendRedirect接受相对URL并将它们解析为绝对URL。显式设置位置——正如您在这里建议的那样——没有任何适当的解析逻辑。有没有建议尽可能简单的方法来正确地从相对路径到绝对路径解决它?