在没有ModelAndView的Spring MVC 4中以301状态重定向
我尝试进行重定向301 Status Code
(您知道我想对SEO友好,等等)。
我确实使用过,InternalResourceViewResolver
所以我想使用某种类似于return
"redirect:http://google.com"我的Controller 中的代码。这虽然会发送一个302 Status Code
我试过使用HttpServletResponse
设置头
@RequestMapping(value="/url/{seo}", method = RequestMethod.GET)public String detail(@PathVariable String seo, HttpServletResponse response){
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
return "redirect:http://google.com";
}
它仍然会返回302
。
在检查了文档和Google结果之后,我提出了以下建议:
@RequestMapping(value="/url/{seo}", method = RequestMethod.GET)public ModelAndView detail(@PathVariable String seo){
RedirectView rv = new RedirectView();
rv.setStatusCode(HttpStatus.MOVED_PERMANENTLY);
rv.setUrl("http://google.com");
ModelAndView mv = new ModelAndView(rv);
return mv;
}
它确实可以正常工作,并按预期方式返回代码 301
我想在不使用ModelAndView的情况下实现它(尽管可能很好)。可能吗?
注意:包含的摘录只是详细信息控制器的一部分,并且重定向仅在某些情况下才发生(支持旧版URL)。
回答:
我建议像您一样使用spring的redirectView。您必须具有完整的URL,包括要使用的域等,否则它将执行302。或者,如果您可以访问HttpServletResponse,则可以执行以下操作。
public void send301Redirect(HttpServletResponse response, String newUrl) { response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
response.setHeader("Location", newUrl);
response.setHeader("Connection", "close");
}
以上是 在没有ModelAndView的Spring MVC 4中以301状态重定向 的全部内容, 来源链接: utcz.com/qa/414012.html