客户应该有不同的表现吗?如何?
当前回答
当一个搜索引擎蜘蛛在一个网页的响应头中发现301状态码时,它知道这个网页已经不存在了,它在响应中搜索位置头,选择新的URL并将索引URL替换为新的URL,并转移pagerank。
所以搜索引擎刷新所有索引URL,不再存在(301发现)与新的URL,这将保留你的旧网页流量,pagerank和分流到新的一个(你不会失去你的旧网页流量)。
浏览器:如果浏览器发现301状态码,那么它将缓存旧URL与新URL的映射,客户端/浏览器将不再尝试请求原始位置,而是从现在开始使用新位置,除非缓存被清除。
当搜索引擎爬行器发现一个网页的302状态时,它只会临时重定向到新的位置,并爬行两个页面。旧的网页URL仍然存在于搜索引擎数据库中,它总是试图请求旧的位置并抓取它。客户端/浏览器仍将尝试请求原始位置。
阅读更多关于如何在asp.net c#中实现它,以及它对搜索引擎的影响 http://www.dotnetbull.com/2013/08/301-permanent-vs-302-temporary-status-code-aspnet-csharp-Implementation.html
其他回答
大多数情况下,301 vs 302对于搜索引擎的索引很重要,因为他们的爬虫会考虑这一点,并在使用301时转移PageRank。
详情见Peter Lee的回答。
301表示被请求的资源已经被分配了一个新的永久URI,将来任何对该资源的引用都应该使用返回的URI之一。
302表示请求的资源暂时驻留在不同的URI下。
由于重定向有时可能会改变,因此客户端应该继续使用Request-URI来处理将来的请求。
此响应只有在Cache-Control或Expires报头字段指示时才可缓存。
301的主要问题是浏览器将缓存重定向,即使您从服务器级禁用了重定向。
如果要在短时间内启用重定向,那么最好使用302。
状态301意味着资源(页面)被永久地移动到一个新的位置。从现在开始,客户端/浏览器不应该尝试请求原始位置,而是使用新位置。
状态302意味着资源暂时位于其他地方,客户端/浏览器应该继续请求原始url。
虽然已经有了很多好的答案,但没有一个能从普通浏览器的角度说明缺陷或何时使用其中一个而不是另一个。
当你需要保持对最终URL的动态服务器端控制时,使用302而不是301 HTTP状态。使用301 http状态将使您的浏览器始终从自己的缓存加载最终URL,而不获取任何之前的URL(完全跳过第一次请求)。如果您需要保持服务器端对重定向URL的控制,则可能会产生不可预测的结果。
例如,如果您需要代表用户ip-geo-position (geo-ip-switching)进行URL重定向,请使用302。如果在这种情况下使用301,最终重定向的页面总是直接来自浏览器的缓存,向用户提供不正确/错误的内容。
推荐文章
- 如何使HTTP请求在PHP和不等待响应
- PATCH和PUT请求的主要区别是什么?
- 我可以把我所有的http://链接都改成//吗?
- URL为AJAX请求编码一个jQuery字符串
- 编译System.Net.HttpClient的查询字符串
- 摘要认证和基本认证的区别是什么?
- Axios -删除请求与请求体和头?
- 重定向复制的标准输出到日志文件从bash脚本本身
- 如何在http获取请求设置报头?
- 如何使用Ruby on Rails进行HTTP请求?
- REST API最佳实践:查询字符串中的参数vs请求体中的参数
- Express.js中的res.send和res.json的区别
- 如何评估http响应代码从bash/shell脚本?
- 如何从查询字符串读取值与ASP。网络核心?
- 302和307重定向有什么区别?