我正在使用类似的代码:

@RequestMapping(value="/oldPath")
public String doProductOld(
    @PathVariable(value = "oldProductId") Long oldProductId,
   Model model
) throws Exception {
    Product product = productDao.findByOldId(oldProductId);

    return "redirect:" + product.getUrlNewPath();
 }

一切正常,但是此重定向返回302响应代码,而不是SEO所需的301。如何轻松地(没有ModelAndView或Http响应)更新它以返回301代码?

PS。当从控制器返回ModelAndView对象时,我找到了解决方案,但是当返回tile别名(字符串)时,需要针对Tiles的解决方案。

最佳答案

总体思路是:

@RequestMapping(value="/oldPath")
public ModelAndView doProductOld(
    @PathVariable(value = "oldProductId") Long oldProductId,
   Model model
) throws Exception {
    Product product = productDao.findByOldId(oldProductId);
    RedirectView red = new RedirectView(product.getUrlNewPath(),true);
    red.setStatusCode(HttpStatus.MOVED_PERMANENTLY);
    return new ModelAndView(red);
 }

07-28 04:17