java – HttpServletResponse sendRedirect permanent-ThrowExceptions

Exception or error:

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?

How to solve:

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.

Answer´╝Ü

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

Leave a Reply

Your email address will not be published. Required fields are marked *