301 Permanent Redirect in Java

Posted by Roger Keays, 6 October 2010, 8:20 PM

Wow, I just discovered that all the redirects I had written in my Java webapps use 302 temporary redirects. The reason this is concerning is that SEO best practise recommends using 301 permanent redirects to ensure PageRank and page reputation are attributed to the correct (target) page.

The code I was using looks like this:

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

The problem is of course response.sendRedirect() overrides the permanent redirect status. LOL, hooray for shortcut methods.

The correct way to do a permanent redirect in Java is like this:

response.setStatus(response.SC_MOVED_PERMANENTLY);
response.setHeader("Location", newURL);