3xx HTTP状态码的终极指南

692 阅读17分钟

原文链接:www.sitepoint.com/3xx-http-st…

作者:Alina Tytarenko

前言

如果你在管理一些网站,那么对HTTP重定向的理解对于可靠的网站性能至关重要。在这篇文章中,我们将全面了解一下3xx HTTP状态码,从这里你可以了解它们是如何工作的,如何更好地管理它们,以及它们对SEO的影响。

HTTP重定向的目的

URL重定向涉及到一个网页地址被映射到另一个。网站需要重定向的原因有很多。

比如说,迁移到一个新的域名是使用URL重定向的首要原因之一。有时,你以前的域名太长、太复杂,导致难以记住,或者某种侵权活动迫使你从一个域名转移到另一个域名。

让我们具体看看重定向页面的其他原因:

  • 转发多个域名:当同时拥有多个域名时,需要永久的HTTP重定向,以引导互联网用户和搜索引擎到同一地址。
  • 识别破损链接:404页面可以通过Google Search Console来识别。覆盖报告将给你提供所有链接的详细信息,以便在重定向的帮助下进行修复。
  • 修复破损链接:在识别破损链接后,你可以将其重定向到首页。然而,一个更好的选择是将每个破损的URL重定向到一个具有相同(类似)内容的新页面。
  • 页面的新地址:如果你的原网站有访问量很高的页面,在SERP中排名很高,重定向将帮助你把这个URL映射到新的地址。对于这种情况,你必须确定你用于重定向的旧网页没有消失。
  • 需要删除页面:为所有你需要删除的页面创建HTTP重定向,确保不要用404错误来吓唬访客。重定向将向谷歌或其他搜索引擎发出信号,旧链接的链接值应分配给重定向的URL。

除此之外,还有一些其他场景值得考虑。如果你需要简化和跟踪显示广告或应对紧急情况,重定向将派上用场。重定向有助于营销人员监测广告反响。同时,网络管理员可以在重定向的帮助下修复任何失败的链接活动。

总之,谷歌对重定向的定义是控制抓取和索引。谷歌搜索中心将HTTP重定向解释为进行无缝过渡的做法,通过几个URL访问一个页面,纠正过时的URL,并将用户从删除的页面重定向到新的页面,从而排除404错误。

网络协议基础知识

互联网上用于传输数据和信息控制的托管服务器的基本协议被称为HTTP。超文本传输协议允许万维网的互联网用户和服务器之间维护网站以及提供通信。

HTTP是用于不同类型数据的信息系统的协议:分布式、超媒体和协作式。HTTP的主要目标是提供基于互联网的无缝交互。

这种请求-响应协议通过TCP连接工作。传输控制协议允许互联网与万维网上代表的任何可用识别资源进行交互。用户与网页、视频和信息服务器的通信是通过HTTP进行的。这样,客户可以获得对网页的访问。

值得注意的是,超文本传输协议使用代理。它们是用于内容识别和分析的特殊用途的过滤器。HTTP代理防止用户低质量地发送和显示文件:

  • 间谍软件的文本和图像
  • 畸形的多媒体文件
  • 网络攻击驱动的音频文件

HTTP客户端是用来保护用户的浏览器的。它向服务器发送请求信息。HTTP服务端负责HTTP响应连接。HTTP代理的原理可以用以下方式来表示:

http-proxy.png

HTTP协议的主要优点是:

  • HTTP协议提供了先进的寻址方案。所有的IP地址在万维网上都变得容易识别和确认。
  • 实现了在线资源的灵活性和可访问性。HTTP为扩展和插件下载提供了机会。这样,相关的数据就会显示出来。

HTTP共有九种请求方法来执行不同的网络操作。

请求描述
PUT负责修改现存的网络资源。该请求也允许创建新的URL。
HEAD创建一个特殊用途资源的请求,不需要任何主体内容。
POST负责将现有资源修改的内容添加到新的网页上。
DELETE删除指定资源。
GET请求完整资源。
TRACE显示用户访问的网络资源的任何更新和变化。
OPTIONS展示用户可以访问的HTTP方法列表。
CONNECT负责将基于请求的连接转换为TCP/IP隧道。
PATCH使得对网络资源进行部分修改成为可能。

状态码

HTTP状态码是决定服务器响应的特殊元素。有必要了解每一个HTTP状态码,以明确问题并解决它们。

有五类状态码需要考虑。有信息响应、成功、重定向、客户错误和服务错误五种类别。第一个数字表示HTTP状态码的类别。让我们仔细看看每个响应的类别:

  • 1xx信息响应:这类状态码告知了请求的接收情况。它意味着步骤继续。比如说,100表示continue。
  • 2xx成功:这些状态码是关于对请求的理解和接收。比如说,200表示OK。
  • 3xx重定向:这类状态码表示需要一些特殊目的的动作来完成请求。比如说,301表示redirection。
  • 4xx客户端错误:这类响应状态码标志着该请求不能进行。此外,它可能意味着请求中存在错误的语法。比如说,400表示bad request。
  • 5xx服务端错误:这类HTTP状态码是关于由服务器的失败处理造成的,不成功的服务器响应。比如说,500表示internal error。

值得注意的是,一些状态码和错误对SEO有直接影响。虽然1xx和2xx对搜索引擎优化影响不大(有200响应是最好的做法),但3xx、4xx和5xx的会对抓取和索引你的网页产生负面影响。你应该始终注意解决4xx和5xx状态码和错误,因为这对你网站的整体排名非常有害。

HTTP 300状态码也许对SEO扮演核心角色。这类状态码负责将所有的SEO价值从你的旧网址传递到新网址。因此,有必要挖掘每个3xx状态码的含义(临时或永久重定向、代理、多重选择,等等)。

3xx状态码

3xx状态码表示不同类型的HTTP重定向。营销人员通常使用3xx状态码来监测和分析用户体验、网站用户的行为以及网站的SEO性能。DataTracker资源确定了由3xx HTTP状态码衍生的四种重定向类型:

  • 像301,302,307这样的重定向表示目标资源已经被分配了一个新的URL。
  • 300重定向提供多种选择(根据请求选择匹配的网络资源)。
  • 303重定向提供了对已完成请求的间接响应,如果Location字段可以识别的话。
  • 304重定向提供HTTP重定向到之前缓存的结果中。

3xx状态码出现在有必要表明服务器的重定向响应时。3xx HTTP状态码的另一个例子是为被删除的页面保持其排名。此外,当有必要修复破损的URL时,重定向也会派上用场。

当错误发生时,重定向不期望看到其他响应码。例如,重定向不能解决1xx、4xx、5xx的问题(Not Implemented = 501;Bad Gateway = 502;Unprocessable Entity = 420)。

下面就让我们仔细看看每个3xx状态码,了解它们对SEO和网站排名的影响。

300 Multiple Choices

这些状态码通常用于REST APIs。给予浏览器多种选择,它应该在满足请求的资源中进行选择。例如,如果你有多个视频格式选项或不同的文件扩展名需要指定,300状态码就会派上用场。

使用300重定向另一个原因是,为了满足内容协商的要求。服务器通知用户代理可用的表示类型供其选择。仔细看一下这个例子,看看300重定向的作用。

HTTP/1.1 300 Multiple Choices
Server: curveball/0.3.1
Access-Control-Allow-Headers: Content-Type,User-Agent
Access-Control-Allow-Origin: *
Link: </foo> rel="alternate"
Link: </bar> rel="alternate"
Content-Type: text/html
Location: /foo

你可以在代码中看到/foo/bar。当两个选项都可以选择时,地址就被指定了。

301 Moved Permanently

还有一个状态码通常用于REST APIs中。该状态码主要作用是,永久性的重定向。如果你需要在短时间内使用重定向,301重定向就不适合。在301 HTTP状态码的帮助下,互联网用户和搜索引擎都被带到一个新的URL。该类型的最佳重定向方案是当前一个页面不打算恢复的时候。

让我们借助一个真实的案例来解释永久HTTP重定向的概念:

  • FAQ页面托管在子域名下面(faq.website.com)。
  • 你决定移动FAQ页面到子文件夹下(www.website.com/faq/)。
  • 如果子域名被删除了,404页就会损害网站的SEO。
  • 用户体验也受到影响,所以重定向是必须的。
  • 放置一个301重定向,防止用户访问旧的URL。
  • 搜索引擎也将被重定向到新的FAQ页面。

让我们再看个永久性重定向的例子(301重定向)。在这里我们可以看到一个301 HTTP状态码,用于将用户和搜索引擎重定向到新的地址。

status.png

程序员经常使用.htaccess文件来实现不同类型的重定向,包括301重定向。有两种301重定向的方法需要考虑到:

  • 整个域名可以被重定向到一个新的网站。在Redirect 301后添加你感兴趣的域名:

    Redirect 301 /[http://www.website.com/](http://www.website.com/)
    
  • 如果你只想重定向一个页面,有必要在Redirect 301后面指定旧的URL:

    Redirect 301 /oldurl/ [http://www.website.com/newurl/](http://www.website.com/newurl/)
    

这里要提到的是,各种编码方法需要不同的重定向实现。

需要注意的是,JavaScript对于SEO实践来说远不是最佳选择。谷歌有时会对JavaScript中的301重定向进行错误的解释。如果你对SEO友好的永久重定向感兴趣,最好选择上面列出的方法之一。

302 Found

在REST API中还有一个比较常用的状态码。与永久的301重定向相比,302重定向是在需要一些临时重定向时使用。比如说,你知道这个URL的改变,并不久后重定向,或者以前的页面会在某个时间点恢复。还有一种情况是,你要删除旧的页面,但你需要重定向所有的流量,并保存临时URL上的排名分数。使用302状态码的其他原因包括:

  • 迁移到一个新的,但却是临时的域名
  • 更改网站结构(临时地)

值得注意的是,302重定向的实施方法与301的实施方法相同。出于SEO友好的目的,避免使用JavaScript编码的建议在这里也适用。

status.png

比如说,在上面的图片中,我们可以看到302状态码是如何用于网站的临时地址。请注意,你也可以将这种类型的重定向用于你的网站/页面重新设计,一些测试,促销活动的运行,以及其他短期活动和安排。

303 See Other

该HTTP状态码允许REST API以引用的形式向客户发送建议。303重定向的一个显著特点是其无缓存性能。但值得一提的是,重定向的第二个会话将被缓存。

303状态码对SEO来说并不重要。但是,当另一个URL可以被推荐而不是一个已经访问过的URL时,它可以帮助提高用户友好度并实现营销目的。

304 Not Modified

这个状态码和上面列出的其他3xx状态码一样,常用于REST APIs中。当不需要重新传输时,可以使用该状态码。如果页面还没有被修改,也可以使重定向无缓存。

让我们通过一个304重定向的例子来仔细看看。该状态码是在请求方法和请求URL下面指定的。

status.png

305 Use Proxy

该HTTP状态码目前已被废弃。一些浏览器不允许使用这种类型的重定向。例如,Mozilla Firefox和Internet Explorer出于安全原因阻止用户使用305重定向。主要是因为用于请求和提供访问网络资源的单一代理。当涉及到一些浏览器时,这种方法是有风险的。

306 Switch Proxy(未使用)

程序员现在不使用这个状态码了。它的主要思想是当一些特殊目的的请求发生时有机会切换代理。如果编码中出现了这种类型的重定向,用户将默认返回到指定的代理。

307 Temporary Redirect

这个HTTP状态码与302状态码非常相似。这就是为什么重定向所需的实现方法与301和302是一样的。让我们来挖掘一下307和302的区别,因为它们都是关于临时的HTTP重定向。关于307重定向,有两种意见需要考虑:

  • 307和302重定向都提供了内容的临时重定向。当发生一些快速变化时,建议使用这两个状态码其中的一个。
  • 302和307临时重定向是不同的。302状态码在改变HTTP方法方面值得注意。同时,307重定向没有改变HTTP方法。

这意味着302重定向中GET请求方法的任何改变都会导致网络上不可预测的结果。这不会发生在307重定向中。下图是一个使用307临时重定向的例子。

status.png

308 Permanent Redirect

这个状态码被认为是实验性的,但它的语义与301永久重定向相同。308和301重定向的唯一区别是是否可以修改HTTP方法。301重定向允许用户代理修改使用的HTTP方法,而308状态码则意味着重定向的HTTP请求方法是不可改变的。

status.png

308 HTTP状态码是相当新的,因为它在2015年才被引入。一些浏览器仍然无法识别308重定向,并向用户显示空的页面,而不是重定向的页面(例如,Internet Explorer 11)。这就是为什么301永久重定向是最好的,因为它有更好的支持和对SEO的友好。308HTTP状态码的支持度少的可怜,搜索爬虫并不总是能识别它。

重定向对比

300重定向对SEO很重要。如果你需要从一个旧页面转移到另一个页面,并且不想浪费它的排名,建议使用临时或永久重定向。你可以使用以下几个HTTP 3xx状态码:

  • 301或308永久重定向
  • 302,303,307临时重定向

当涉及到临时和永久重定向时,301和302 HTTP状态码总是被优先考虑。但这些HTTP 3xx状态码之间是有区别的。下面是第一种情况。你已经决定永远删除你的旧网站。但是这个URL经常被访问,有一个建议是使用301永久重定向,以保持你的网站排名。

第二种情况是当你重组你的网站并在一些短期内保存你的SERP。该网站将失去SEO价值。搜索引擎会保留你的旧网址,但在重定向后开始索引你的新页面。如果你确定会回到旧的URL,最好使用302重定向(临时)。

301 vs 302

参数对比301302
重定向类型永久临时
什么时候使用用于重定向即将被删除的旧网页。用于重定向将被恢复的旧网页。
重定向语法被改变被改变

永久重定向

参数对比301308
重定向类型永久永久
什么时候使用用于重定向即将被删除的旧网页。用于重定向将被删除的旧网页。
特别之处更适合于SEO;被爬虫很好地识别;用于永久重定向;对重定向的页面有充分的链接权重。实验性的;支持有限;用于避免对GET方法的错误改变。
重定向语法被改变不被改变

301对谷歌来说有更强的规范性。同时,谷歌团队的代表表示,308和301 HTTP状态码提供了相同的重定向和SEO驱动的属性。

临时重定向

参数对比302307
重定向类型临时临时
什么时候使用用于重定向将被恢复的旧网页。用于重定向将被恢复的旧网页。
特别之处用于临时重定向;被搜索爬虫很好地识别。更适合于SEO;用于避免对GET方法的错误改变;将客户的请求转移到另一个主机上。
重定向语法被改变不被改变

需要哪种状态码

必不可少的HTTP 300状态码是301、302和307,因为它们用于临时和永久重定向。这些状态码被建议用于确保SEO友好的网站迁移、URL变更、网站重组和更新、域名变更或网站页面的短期重新发布活动。

值得注意的是,重定向的过程有一些要求,以满足谷歌的排名标准。主要有五个提示要记住:

  • 只在301重定向后转移到一个新的域名。谷歌不喜欢重复的内容,并会因为这个错误而惩罚你。
  • 在你的域名的http://http://www版本之间设置301、302和307重定向。这对你的搜索引擎优化至关重要。
  • 考虑谷歌对重定向链的偏好。不要连续超过两个重定向。在过度使用重定向的情况下,爬虫将停止访问你的网站。
  • 使用有用的工具,如谷歌搜索控制台、HTTP状态、WTOOLS HTTP检查器、重定向检查器或SE排名网站审计工具,以简化HTTP状态码监测和实施及时更改。
  • 如果你要从一个网站迁移到另一个网站,请重新规划你的SEO战略。考虑关键词搜索、新的内容营销策略和其他基本准备工作。

以上就是本文的所有内容,如果对你所有帮助,欢迎点赞、收藏、转发~