301 和 302 重定向有什么区别?301 和 302 都是 HTTP 状态码。它们很常见,但普通用户看不到它们;它们是帮助管理员在出现问题时进行故障排除的代码,它们是服务器在相互交谈时使用的代码。
实际上有相当多的状态码。这些范围从 100(一个简单的继续代码)到 404:页面未找到,或 504(服务器超时)。
服务器重定向的类型
301 和 302 都是重定向 HTTP 代码,但它们不是唯一的。实际上有几种不同类型的重定向,而不仅仅是我们通常使用的重定向。301 和 302 是最常见的,但它们并不孤单。
300 多项选择。此状态代码向浏览器指示他们尝试到达的目的地有多种可能的选项。把它想象成一个维基百科消歧页面。这些是相当罕见的,对您的 SEO 没有任何价值。
301 永久移动。这是典型的重定向。301 重定向指示链接的目标已将 URL 永久更改为不同的 URL。例如,当 SEOhqt 更名为 hqt 时,他们将 URL 从 SEOhqt.com 更改为 hqt.com。每个 SEOhqt.com 页面都通过永久 301 重定向重定向到相应的 hqt.com 页面。
302 发现。这也称为对象移动或临时移动重定向代码。它也被广泛使用不当。在实际的 HTTP 规范中,302 仅表示预期的 URL 不是给定资源的正确 URL。然而,大多数 Web 系统以一种临时重定向的方式实现它,因此它通常用作 301 的一种临时版本。
为了区分原始 302 的两个预期功能,HTTP 代码标准的管理机构同时实施了 303 和 307 代码。实际上,这两种都不常用,302 仍然可以作为临时重定向。
303 见其他。这是原始 302 的预期功能;当浏览器发出 PUT 调用并通过 GET 响应接收到不同的 URL 时,它使用的是 303 协议。如果您没有深入研究技术标准,您几乎可以忽略这一点。这与您的 SEO 完全无关。
304 未修改。这是用于数据缓存的代码。如果服务器过去获取了某个页面的数据,并且客户端请求该页面,则服务器将检查该页面是否已更改。如果页面响应 304,则表明服务器已经拥有该页面的最新版本。然后,服务器可以提供它已有的内容,而无需重新运行代码、重新获取资源或重新生成页面。
305 使用代理。这段代码是一个奇怪的遗留措施,服务器用来告诉客户端它只能通过指定的代理访问服务器。它被滥用,随后被浏览器忽略,并基本被放弃。类似地,306 代码指定客户端应使用特定代理,并且不再使用。
307 临时重定向。这就是我们最常认为的302是什么,302一般用来做什么。当浏览器向服务器请求 URL 1,但 URL 已临时更改时,服务器将响应 307 和新的 URL 2。但是,由于是临时重定向,浏览器不会存储此信息。下次浏览器请求 URL 1 时,服务器将再次检查并查看重定向是否已被删除。
308 永久重定向。这是 301 重定向的现代、更流畅的版本。当浏览器向服务器询问 URL 1 时,服务器会说“实际上,现在是 URL 2”。然后流量将正常进行到 URL 2,而不更改 HTTP 方法;这允许通过表单提交进行数据传输而不会出现问题,例如,而不是通过重定向失败。
在所有这些中,你真正应该关心的只有四个;301、302、307 和 308。
获取和发布
为了了解您在任何给定时间应该使用哪个重定向,您需要了解一些 HTTP 的工作原理。忍受我,这有点技术性。
GET和POST都是浏览器或客户端与服务器通信的方法。简单来说,GET就是浏览器向服务器询问特定数据。POST 将数据提交到服务器进行处理。
GET请求可以被缓存。它们保留在浏览器历史记录中,可以添加书签,并且专门用于检索数据。“抓住我这个 URL 上的内容”本质上是一个 GET 请求。
POST请求更像是由服务器处理的脚本。您是否曾经使用过基于 Web 的搜索表单,当您点击“后退”按钮或尝试刷新页面时,会抛出“您需要将数据重新提交到表单才能继续”警告?这是因为它是一个 POST 请求。POST 请求不会被缓存,不会留在浏览器历史记录中,也不能被添加书签,因为它们或多或少是对服务器的一组命令,而不是对静态资源的请求。
301 重定向和 308 重定向之间的核心、主要区别在于 308 重定向不允许从 POST更改为 GET。302 和 307 也是如此;307是不允许改变的。
这什么时候相关?答案是,很少。如果您在 URL 1 上有一个从 URL 2 中提取数据的表单,并且您将 URL 2 更改为 URL 3,则该表单将在没有特定操作的情况下中断。在这种情况下,使用编号较高的重定向 307 或 308 将很重要。
在绝大多数情况下,尤其是当您只关心 SEO 时,您会希望坚持使用 301 和 302 重定向。
当 SEO 是您的主要关注点时,您是否应该使用 307 或 308 重定向?一般来说,答案是否定的。307 和 308 都是 HTTP 1.1 标准。虽然这些更新和更有效,但它们不一定在服务器、浏览器或搜索引擎中得到广泛支持。在它们被更广泛采用之前,最好将重定向保留为 301 或 302。
你应该使用哪个?
如上所述,301 重定向是永久重定向,302 是临时重定向。您应该使用哪一种,何时使用?
302 重定向被视为临时更改,不会缓存或保存。本质上,搜索引擎认为 302 重定向并不重要。如果他们正在抓取您的网站,他们会使用它,但他们会认为原始链接是真正的链接。
在某些情况下,302 重定向可能很有价值。它们可用于地理定位、拆分测试、某些形式的用户跟踪以及临时重定向。例如,在维护站点期间更改 URL 以便内容在不同的 URL 上仍然可用可以使用 302 来完成。
302 重定向不会将旧 URL 中的 PageRank 或链接汁传递到新 URL。如果您将站点的 URL 从一个更改为另一个,如 Moz 示例中所示,您不想使用 302 重定向。这样做基本上会将您的所有站点值留在旧 URL 上。
在某些情况下,Google 可能足够聪明,可以识别 302 被误用为 301,并且新站点应该具有旧站点的价值。但是,这可能需要一些时间,如果真的发生的话,与永久重定向相比,它们可能会给您带来更少的价值。您实际上是在对 Google 说您对正确迁移网站的了解还不够多,他们会在信任您的同时牢记这一点。当您打算使用 301 时,使用 302 重定向会损失很大一部分价值。
如前所述,301 重定向是永久性的。如果您从一个 URL 迁移到另一个 URL、合并两个站点或以其他方式对 URL 进行不打算还原的更改,则 301 重定向有效。
301 重定向旨在通知浏览器和搜索引擎从一个 URL 移动到另一个 URL。把它想象成当您搬家时向您当地的邮局发送地址变更表。如果不归档,您的邮件将不会到达您的新家。
一般来说,如果您知道更改将是永久性的,您应该使用 301。如果您想将 PageRank 传递给您的新 URL,请使用 301。如果您有临时更改 URL 的情况,您可以使用 302 ,但不要指望谷歌通过它来引用链接汁。
重定向应该持续多久?
301 重定向是永久的,但永久的永久程度如何?你应该保持重定向多久?
Google 的代表 John Mueller 谈到了这种情况,并表示从长远来看,301 重定向应该到位。“……这可能是一年,或者理想情况下甚至超过一年,这样我们就可以真正确定指向旧 URL 的所有内容都指向新 URL。”
长期保持重定向对于谷歌来说很重要,以确保他们已正确编入索引并将有关旧页面的所有内容重定向到新页面。对于将旧页面添加为书签的用户来说,更改他们的书签也很重要。当您删除重定向并且有人尝试访问旧页面时,他们将收到 404。
谷歌没有说重定向应该是永久性的唯一原因是因为他们识别域名过期或易手。Moz 仍在为 SEOMoz.com 域名付费,因此他们可以保持重定向。如果他们想停止为域名付费,或者如果他们忘记续订而被其他人购买,则所有旧的 SEOMoz 链接都会断开或由拥有该域名的人控制。
对于“小”重定向,例如更改 URL 的子域或子文件夹但保留主域名,您可以无限期地保持重定向,不会出现任何问题。这样做不会给您的服务器或预算带来压力。
对于较大的重定向,例如完全更改您的域名,Google 建议将重定向保留至少一年。一年后,开始查看您的服务器日志。如果人们仍然从旧 URL 重定向到新 URL,请弄清楚他们来自哪里。它可能是旧的活动链接,可能是带有书签的用户,也可能是任何东西。弄清楚来源是什么,并采取措施(如果可以)在删除和放弃重定向之前将来源更改为准确的 URL。如果您有能力无限期地保留旧域名而不会造成预算压力,只是为了保持重定向有效,请随意这样做。
--- END ---