Reputation: 2216
This will redirect a request with a temporary 302 HTTP status code:
HttpServletResponse response;
response.sendRedirect("http://somewhere");
But is it possible to redirect it with a permanent 301 HTTP status code?
Upvotes: 72
Views: 77504
Reputation: 979
I used the following code, but didn't worked for me.
String newURL = res.encodeRedirectURL("...");
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
response.sendRedirect(newURL);
then I tried this piece of code it worked for me
String newURL = res.encodeRedirectURL("...");
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
response.setHeader("Location", newURL);
this worked for me, I had the same issue
how to set status to 301 while redirecting
Upvotes: -1
Reputation: 1109875
You need to set the response status and the Location
header manually.
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
response.setHeader("Location", "http://somewhere/");
Setting the status before sendRedirect()
won't work as sendRedirect()
would overridde it to SC_FOUND
afterwards.
Upvotes: 124