2012-02-20 1 views
1

Возможный дубликат:
URL redirection in Java return 302 instead of 301SC_MOVED_PERMANENTLY результаты в 302

response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY); 
response.sendRedirect(redirectUrl); 

Я использую это в моем redirectcontroller дать редирект 301 в качестве статуса. Но когда я проверяю заголовок страницы в header checker, он дает 302 (Moved Temporarily) в качестве результата.

Ответ:

response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY); 
response.setHeader("Location", redirectUrl); 

ответ

4

Да, вы вызываете sendRedirect которые документированные как этот (курсив мой):

Посылает временного перенаправления ответ клиента, используя указанную переадресацию URL местоположения.

Другими словами, ваша первая строка совершенно не имеет значения, когда вы явно вызываете sendRedirect. Если вы хотите быть явным в этом вопросе, вы можете установить статус, установить соответствующий заголовок, а затем просто дать ответ завершить нормально.

+1

@ Downvoter: Зачем прокомментировать? –

+0

Спасибо за ваш быстрый ответ. Что мне нужно добавить, чтобы перенаправить с 301? –

+0

@ user1173655: Как я уже сказал, настройте соответствующий заголовок URL-адреса переадресации (я не помню, что это не так), установите статус, как вы уже делаете, и все должно быть хорошо. –