我正在使用类似的代码:
@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);
}