在客户端应该表现不同? 怎么样?
Answer 1:
状态301意味着资源(页)被永久移动到新位置。 客户端/浏览器不应尝试请求原始位置,但是从现在开始使用新的位置。
状态302意味着资源暂时位于其他地方,并在客户端/浏览器应该继续请求原始URL。
Answer 2:
当搜索引擎蜘蛛发现在网页的响应头301状态码,它知道这个网页已不存在,它会搜索位置头响应挑选新网址,并与更换新的索引网址,并转移的PageRank 。
所以搜索引擎刷新不再存在(301中)和新的URL的所有索引的URL,这将保留您的旧的网页流量,PageRank和它转移到新的(你不会失去你的老网页的流量)。
浏览器:如果浏览器发现301状态码然后将其缓存旧的URL与新网址的映射中,客户端/浏览器将不尝试请求原始位置,但是从现在开始使用新的位置,除非清除缓存。
当搜索引擎蜘蛛发现了一网页302个状态,它只会暂时重定向到新的位置,既抓取的网页。 旧的网页网址仍然存在于搜索引擎数据库,它总是试图要求原来的位置,并抓取。 客户端/浏览器仍将尝试请求原始位置。
了解更多关于如何实现它在asp.net C#中,什么是搜索引擎的影响- http://www.dotnetbull.com/2013/08/301-permanent-vs-302-temporary-status-code-aspnet -csharp-Implementation.html
Answer 3:
晴301 VS 302是在搜索引擎索引重要的,因为他们的爬虫使用301时考虑到这一点,并转移的PageRank。
见李彼得的回答更多的细节。
Answer 4:
301所请求的资源已经被分配了一个新的永久性URI,该资源的任何将来参考应该使用返回的URI之一来完成。
302是所请求的资源下不同的URI临时驻留。
由于重定向有时可能会改变,客户应继续使用Request-URI为将来的请求。
如果由缓存控制指示或Expires头字段此响应是仅可缓存的。
Answer 5:
301个重定向 (至少某些浏览器) 无限期缓存 。
这意味着,如果你设置了301,浏览该网页时,你不仅重定向,但重定向被缓存。
当你再次访问该网页,浏览器*根本不屑于请求URL,它只是对缓存的重定向目标。
只有这样,才能撤消301在高速缓存与重定向访问者,重新改向回到原来的网址**。 在这种情况下,浏览器会注意到循环,最后真的要求输入的URL。
显然,这不是一个选项,如果你决定在301到Facebook或任何其他资源你控制住不是完全。
不幸的是,许多主机服务商提供他们的管理界面简单地称为“重定向”,它做了301重定向功能。 如果你使用这个到您的域名给Facebook临时重定向为即将推出页,你基本上是拧。
*至少Chrome和Firefox,根据多久浏览器缓存HTTP 301重定向? 。 只是Chrome尝试它45.编辑:Mac上的Safari也缓存,重新启动浏览器并没有帮助7.0.6(链接说,在Windows上的Safari 5它确实帮助。)
**我尝试的JavaScript window.location = ''
,因为这将是可能在大多数情况下应用的解决方案-这是行不通的。 这导致一个未被发现的无限循环。 然而,PHP的header('Location: new.url')
不破环
底线: 只有当你绝对相信你永远不会再使用该URL使用301S。 平时从不在根目录(example.com/)
Answer 6:
与301的主要问题是浏览器缓存,即使重定向如果禁用了从服务器级别的重定向。
它总是更好地使用302,如果要启用重定向短暂的维护窗口。