64 votes

HttpServletResponse sendRedirect permanent

Cela redirigera une requête avec un code d'état HTTP 302 temporaire :

 HttpServletResponse response;
response.sendRedirect("http://somewhere");

Mais est-il possible de le rediriger avec un code de statut HTTP 301 permanent ?

108voto

BalusC Points 498232

Vous devez définir manuellement l'état de la réponse et l'en- Location

 response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
response.setHeader("Location", "http://somewhere/");

Définir l'état avant sendRedirect() ne fonctionnera pas car sendRedirect() le remplacera ensuite par SC_FOUND .

-3voto

ParagFlume Points 811

J'ai utilisé le code suivant, mais cela n'a pas fonctionné pour moi.

 String newURL = res.encodeRedirectURL("...");
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
response.sendRedirect(newURL);

alors j'ai essayé ce morceau de code qui a fonctionné pour moi

 String newURL = res.encodeRedirectURL("...");
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
response.setHeader("Location", newURL);

cela a fonctionné pour moi, j'ai eu le même problème

comment définir le statut sur 301 lors de la redirection

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X