SEO 之 SpringMVC redirect 301,301和302区别详细讲解
为什么一个重定向和 SEO 扯上了,因为当我们一些内容(URL
链接)改变了,我们要告诉搜索引擎,告诉它这个链接发生了URL
的改变。但是搜索引擎会区别对待 HTTP 重定向状态为 301
& 302
。
可能我们平时没扯上 SEO ,所以我们用的都是 302 。下面说说 302 和 301 的区别。
302和301的解释和应用场景
HTTP Status | 解释 | 应用场景 |
301 |
表示当前URL地址永久性重定向到另外一个地址。 | 当URL 规则发生改变,可以使用这个状态,告诉搜索引擎收录301 之后的地址。 |
302 |
表示当前URL地址临时重定向到另外一个地址。 | 比如没有权限,常用为没有登录,重定向到登录页面等等。 |
没错,都是重定向,但是这个重定向一个表示永久,一个表示临时。
302和301应该怎么用?
先说说302:
我们平时的企业级项目,或者应用级项目,直接302
即可,就是我们平时用的redirect默认就是302
的状态,302
浏览器不会记录302
之后的地址。
举个栗子:当用户访问了一个需要登录的A
页面,您会把用户重定向到Login
登录页面去,这个时候如果用了301
跳转到Login
页面,下次不管用户有没有登录,访问这个A地址,浏览器会直接重定向到Login登陆页面去,都不经过后台控制跳转,这个是浏览器做了优化,认为访问A页面需要永久跳转到登陆页面去。
所以当不知道用什么情况下,那就用302
吧,这也是Redirect
为什么默认是302
的用意。
再说说301:
301真的是只有在 SEO 比较讲究的时候用的比较多,或者你系统改版,确实原来A
地址改成了B
地址,这个时候就用301
,对系统也减少没必要的重复请求,对用户来讲也是一个用户体验的提升。
SpringMVC 302 和 301 代码示范
302 SpringMVC提供了二种封装的方法:
302方案一:
@GetMapping("redirectMethod1")
public String redirectMethod1(){
//直接重定向到一个绝对地址,这里也支持相对路径
return "redirect:https://www.sojson.com/";
}
302方案二:
@GetMapping("redirectMethod2")
public ModelAndView redirectMethod2(){
//这里使用了封装的View
return new ModelAndView(new RedirectView( "https://www.sojson.com/"));
}
其实还有一种原生的方案,下面301后会说到。
301 SpringMVC应该是没有提供方案,下面直接用原生的
@RequestMapping(value="status",method=RequestMethod.GET)
public void status(HttpServletResponse response){
//设置 301
response.setStatus(301);
response.setHeader("Location",String.format("%s/http/status.html", Constant.DOMAIN_WWW));
}
当然也可以设置302
或者其他的状态。
版权所属:SO JSON在线解析
原文地址:https://www.sojson.com/blog/323.html
转载时必须以链接形式注明原始出处及本声明。
如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。