HttpServletResponse sendRedirect постоянный
Это перенаправит запрос с временным кодом статуса HTTP 302:
HttpServletResponse response;
response.sendRedirect("http://somewhere");
Но можно ли перенаправить его с постоянным кодом статуса HTTP 301?
Ответы
Ответ 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 при перенаправлении