在没有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

回到顶部