z12345
z12345

Reputation: 2216

HttpServletResponse sendRedirect permanent

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

Answers (2)

ParagFlume
ParagFlume

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

BalusC
BalusC

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

Related Questions