@浪迹天涯 算法
301转向:是当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的HTTP数据流中头信息(header)中的状态码的一种,表示本网页永久性转移到另外一个地址。 浏览器
302重定向又称之为302表明暂时性转移(Temporarily Moved ), 也被认为是暂时重定向(temporary redirect),一条对网站浏览器的指令来显示浏览器被要求显示的不一样的URL,当一个网页经历太短期的URL的变化时使用。一个暂时重定向是一种服务器端的重定向,可以被搜索引擎蜘蛛正确地处理。 缓存
301重定向与302重定向的区别在于302重定向是暂时的重定向,搜索引擎会抓取新的内容而保留旧的网址。由于服务器返回302代码,搜索引擎认为新的网址只是暂时的。 服务器
301重定向是永久的重定向,搜索引擎在抓取新内容的同时也将旧的网址替换为重定向以后的网址。 性能
@张洪保 网站
301的含义是“永久重定向”,而302的含义是“临时重定向”
301 表明永久性转移是网页更改地址后对搜索引擎友好的最好方法,只要不是暂时搬移的状况,都建议使用301来作转址。 搜索引擎
因为搜索引擎排名算法只是程序而不是人,在遇到302重定向的时候,并不能像人同样的去准确断定哪个网址更适当,这就形成了网址URL劫持的可能性。也就是说,一个不道德的人在他本身的网址A作一个302重定向到你的网址B,出于某种缘由, Google搜索结果所显示的仍然是网址A,可是所用的网页内容倒是你的网址B上的内容,这种状况就叫作网址URL劫持。你辛辛苦苦所写的内容就这样被别人偷走了。 .net
你们都已经对基本的301跳转和302跳转作了解释, 我从个人理解解答下。 索引
若是从便于搜索引擎友好的话固然是301最合适,通常状况下非特地临时性URL转移,都尽可能用301跳转,这样的一个好处是搜索引擎会把该URL的PR值都带到跳转后的地址,而302跳转早期被不少网站看成做弊手段,已经被多数搜索引擎重点盯查。 资源
而性能方面原则上301跳转和302跳转没有多大差异,不过考虑到搜索引擎个案对待,也建议使用301跳转,301跳转搜索引擎是不对原地址进行访问的,而302跳转除了象@张洪保所讲可能被劫持以外,还有可能会加大对服务器的URL请求数量。
搜索引擎对302跳转进行判断的时候,若是发现跳转目标页面URL更加复杂,就会返回来对原URL进行访问,寻取一个简单友好的地址,这样无形会加剧服务器性能损耗,所以301跳转要比302跳转靠普也对服务器性能有保障。
说法同@张洪保 如下是301和302状态码解释:
301 Moved Permanently
被请求的资源已永久移动到新位置,而且未来任何对此资源的引用都应该使用本响应返回的若干个 URI 之一。若是可能,拥有连接编辑功能的客户端应当自动把请求的地址修改成从服务器反馈回来的地址。除非额外指定,不然这个响应也是可缓存的。
新的永久性的 URI 应当在响应的 Location 域中返回。除非这是一个 HEAD 请求,不然响应的实体中应当包含指向新的 URI 的超连接及简短说明。
若是这不是一个 GET 或者 HEAD 请求,所以浏览器禁止自动进行重定向,除非获得用户的确认,由于请求的条件可能所以发生变化。
注意:对于某些使用 HTTP/1.0 协议的浏览器,当它们发送的 POST 请求获得了一个301响应的话,接下来的重定向请求将会变成 GET 方式。
302 Found
请求的资源如今临时从不一样的 URI 响应请求。因为这样的重定向是临时的,客户端应当继续向原有地址发送之后的请求。只有在Cache-Control或Expires中进行了指定的状况下,这个响应才是可缓存的。 新的临时性的 URI 应当在响应的 Location 域中返回。除非这是一个 HEAD 请求,不然响应的实体中应当包含指向新的 URI 的超连接及简短说明。 若是这不是一个 GET 或者 HEAD 请求,那么浏览器禁止自动进行重定向,除非获得用户的确认,由于请求的条件可能所以发生变化。 注意:虽然RFC 1945和RFC 2068规范不容许客户端在重定向时改变请求的方法,可是不少现存的浏览器将302响应视做为303响应,而且使用 GET 方式访问在 Location 中规定的 URI,而无视原先请求的方法。状态码303和307被添加了进来,用以明确服务器期待客户端进行何种反应。