HTTPredirect:301(永久)与302(临时)

客户应该有不同的performance吗? 怎么样?

状态301意味着资源(页面)被永久移动到一个新的位置。 客户端/浏览器不应该尝试请求原始位置,而是从现在开始使用新的位置。

状态302表示资源暂时位于其他地方,客户端/浏览器应该继续请求原始URL。

当search引擎蜘蛛在网页的响应头中发现301状态代码时,它知道该网页不再存在,它search位置标题作为响应,select新的URL并用新的URLreplace索引的URL,并且传输页面排名。

因此,search引擎刷新所有已经不存在的索引URL(301find)与新的URL,这将保留您的旧网页stream量,pagerank并转移到新的(你不会失去你旧网页的stream量)。

浏览器:如果浏览器发现301状态码,那么它会caching旧URL与新URL的映射,客户端/浏览器将不会尝试请求原始位置,而是从现在开始使用新的位置,除非caching被清除。

在这里输入图像描述

当一个search引擎蜘蛛find一个网页302的状态,它只会暂时redirect到新的位置,并抓取这两个页面。 旧的网页url仍然存在于search引擎数据库中,并且始终尝试请求旧位置并对其进行抓取。 客户端/浏览器仍然会尝试请求原始位置。

在这里输入图像描述

阅读更多关于如何在asp.net c#中实现它和什么是对search引擎的影响 – http://www.dotnetbull.com/2013/08/301-permanent-vs-302-temporary-status-code-aspnet -csharp-Implementation.html

大多数情况下,301和302对search引擎的索引非常重要,因为他们的抓取工具会考虑到这一点,并在使用301时转移PageRank。

有关更多详情,请参阅Peter Lee的回答 。

301是被请求的资源已经被分配了一个新的永久URI,并且任何将来对这个资源的引用都应该使用返回的URI之一来完成。 302是请求的资源暂时驻留在不同的URI下。 由于redirect有时可能会被改变,所以客户端应该继续使用请求URI来做未来的请求。 如果由Cache-Control或Expires标头字段指示,则该响应仅可高速caching。

301redirect被无限期地caching (至less由某些浏览器)。

这意味着,如果您设置了301,请访问该页面,您不仅可以redirect,而且可以cachingredirect。

当你再次访问那个页面时,你的浏览器*甚至不用去请求这个URL,它只是进入caching的redirect目标。

在caching中redirect访问者的唯一方法是重新将其redirect回原始URL **。 在这种情况下,浏览器会注意到循环,最后确实要求input的URL。

显然,如果你决定301到Facebook或者其他任何你没有完全控制的资源,这都不是一个选项。

不幸的是,许多主机提供商提供了一个简单的称为“redirect”的pipe理界面的function,它做301redirect。 如果您正在使用此function暂时将您的域名redirect到Facebook,那么您已经基本搞定了。

*至lessChrome和Firefox,根据浏览器cachingHTTP 301s多长时间? 。 刚刚用Chrome 45试了一下。编辑:在Mac上的Safari 7.0.6也caching,浏览器重启没有帮助(链接说,在Windows 5上的Safari 5,它确实有帮助。

**我试过JavaScript的window.location = '' ,因为这将是在大多数情况下可以应用的解决scheme – 它不起作用。 它导致一个未被发现的无限循环。 但是,PHP header('Location: new.url')确实打破了循环

底线: 只有使用301s,如果你绝对确定你永远不会再使用该url。 通常不会在根目录(example.com/)

301的主要问题是,即使您禁用服务器级别的redirect,浏览器也会cachingredirect。

如果您启用短期维护窗口的redirect,最好使用302。