HTTP 状态代码以及网络连接错误和 DNS 错误对 Google 搜索有何影响

本文介绍了不同的 HTTP 状态代码、网络连接错误和 DNS 错误对 Google 搜索有何影响。我们在本文中介绍了 Googlebot 在网络上最常遇到的 20 个状态代码,以及最突出的网络连接错误和 DNS 错误,但未介绍一些较奇特的状态代码,例如 418 (I'm a teapot)。本文中提及的所有问题都会在 Search Console 的“网页索引编制”报告中生成相应的错误或警告。

HTTP 状态代码

HTTP 状态代码是由托管网站的服务器在对客户端(如浏览器或抓取工具)发出的请求作出响应时生成的。每个 HTTP 状态代码都有不同的含义,但请求结果往往相同。例如,有多个状态代码会发出重定向信号,但它们的结果是相同的。

Search Console 会为 4xx–5xx 范围内的状态代码和失败的重定向 (3xx) 生成错误消息。如果服务器返回 2xx 状态代码,则响应中接收到的内容可能会被考虑编入索引。

下表包含 Googlebot 最常遇到的 HTTP 状态代码,并解释了 Google 如何处理各个状态代码。

HTTP 状态代码

2xx (success)

Google 会考虑将内容编入索引。如果内容表明有错误,例如空网页或错误消息,则 Search Console 会显示 soft 404 错误

200 (success)

Google 会将内容传递给索引编制流水线。索引编制系统可能会将内容编入索引,但不保证一定会。

201 (created)
202 (accepted)

Googlebot 会等待内容一段时间,然后将其接收的任何内容传递给索引编制流水线。超时时长取决于用户代理,例如,Googlebot(智能手机版)的超时时长可能与 Googlebot Image 的不同。

204 (no content)

Googlebot 会向索引编制流水线发出信号,指示它未收到任何内容。Search Console 可能会在网站的“网页索引编制”报告中显示 soft 404 错误。

3xx (redirection)

Googlebot 会跟踪最多 10 次重定向。如果抓取工具在 10 次重定向内没有收到内容,则 Search Console 会在网站的“网页索引编制”报告中显示重定向错误。Googlebot 跟踪的重定向次数取决于用户代理;例如,Googlebot(智能手机版)的重定向次数值可能不同于 Googlebot Image。

对于 robots.txt,Googlebot 会按照 RFC 1945 的规定跟踪至少五次重定向,然后便会停止,并将其作为 robots.txt 文件的 404 错误处理。

Googlebot 重定向网址中收到的任何内容都会被忽略,最终目标网址的内容会被考虑编入索引。

301 (moved permanently)

Googlebot 会跟踪重定向,并且索引编制流水线会将该重定向用作指示重定向目标应是规范网址的信号。

302 (found)

Googlebot 会跟踪重定向,并且索引编制流水线会将该重定向用作指示重定向目标应是规范网址的信号。

303 (see other)
304 (not modified)

Googlebot 会向索引编制流水线发出信号,指示内容与上次抓取的内容相同。索引编制流水线可能会重新计算网址的信号,除此之外,此状态代码对索引编制没有任何影响。

307 (temporary redirect) 等同于 302
308 (moved permanently) 等同于 301

4xx (client errors)

Google 的索引编制流水线不会考虑将返回 4xx 状态代码的网址编入索引,而已编入索引且返回 4xx 状态代码的网址会从索引中移除。

Googlebot 从会返回 4xx 状态代码的网址收到任何内容都将被忽略。

400 (bad request)

系统对 429 之外的所有 4xx 错误都采用同一种处理方式:Googlebot 向索引编制流水线发出信号,指示内容不存在。

索引编制流水线会将之前已编入索引的网址从索引中移除。 系统不会处理新遇到的 404 网页。抓取频率会逐渐降低。

401 (unauthorized)
403 (forbidden)
404 (not found)
410 (gone)
411 (length required)
429 (too many requests)

Googlebot 会将 429 状态代码视为服务器过载的信号,这被视为服务器错误。

5xx (server errors)

5xx429 服务器错误会提示 Google 抓取工具暂时减慢抓取速度。已编入索引的网址仍会保留在索引中,但最终会被丢弃。

如果 robots.txt 文件返回服务器错误状态代码的时间超过 30 天,Google 会使用 robots.txt 的最后一个缓存副本。如果没有缓存副本,Google 会假定没有任何抓取限制。

Googlebot 从会返回 5xx 状态代码的网址收到任何内容都将被忽略。

500 (internal server error)

Googlebot 会降低网站的抓取速度。抓取速度下降幅度与返回服务器错误的具体网址数量成比例。 Google 的索引编制流水线会从索引网址中移除始终返回服务器错误的网址。

502 (bad gateway)
503 (service unavailable)

soft 404 个错误

soft 404 错误是一个网址,会在返回的页面中向用户表明目标网页不存在,同时还会返回 200 (success) 状态代码。在某些情况下,软 404 可能是一个不含任何主要内容的页面或是一个空页面。

此类网页可能是由网站的网络服务器、内容管理系统或用户的浏览器出于各种原因生成的。例如:

  • 缺少服务器端包含 (SSI) 文件。
  • 与数据库的连接中断。
  • 空的内部搜索结果页。
  • 未加载或缺少 JavaScript 文件。

返回 200 (success) 状态代码,但在网页上显示或建议了错误消息或某种类型的错误,这会导致糟糕的用户体验。用户可能会认为该网页是正常运行的网页,但之后却出现了某种错误。此类网页不会显示在搜索结果中。

当 Google 算法根据网页的内容检测到该网页实际上是错误网页时,Search Console 会在网站的“网页索引编制”报告中显示 soft 404 错误。

修正 soft 404 错误

您可以通过多种方式解决 soft 404 错误,具体取决于网页的状态和您想要的结果:

请尝试确定最适合用户的解决方案。

网页和内容已不再存在

如果您移除了相应网页,并且您的网站上没有含类似内容的替换网页,请针对该网页返回 404 (not found)410 (gone) 响应(状态)代码。这些状态代码会告知搜索引擎:该网页不存在,相应内容不应编入索引。

如果您有权访问服务器的配置文件,可以自定义这类错误页面,以便为用户提供帮助。一个好的自定义 404 页面会帮助用户找到所需信息,还会提供其他实用内容,促使用户进一步浏览您的网站。以下是一些技巧,帮助您设计实用的自定义 404 页面:

  • 明确告诉访问者无法找到其要找的网页。采用友好并有吸引力的语言。
  • 确保 404 页面的外观和风格(包括导航方式)与您网站的其他网页一致。
  • 考虑添加指向以下内容的链接:您的最热门文章/博文以及网站首页。
  • 不妨提供一种供用户报告链接损坏的方式。

自定义 404 网页是专为用户创建的。由于从搜索引擎的角度来看,这些网页没有任何用处,因此请确保服务器返回 404 HTTP 状态代码,以防止这些网页被编入索引。

网页或内容现已移到别处

如果您的网页已移走或有明确的替换网页,请返回 301 (permanent redirect) 以重定向用户。这样做不会中断用户的浏览体验,还是一种将网页新位置告知搜索引擎的好办法。请使用网址检查工具验证您的网址是否确实返回了正确的代码。

网页和内容仍然存在

如果系统将某个本身正常的网页标记为 soft 404 错误,可能是因为 Googlebot 无法加载该网页、该网页在呈现期间缺少重要资源或显示醒目的错误消息。请使用网址检查工具检查呈现的内容和返回的 HTTP 代码。如果呈现的是空白、几乎空白的网页或内容显示错误消息,可能是因为您的网页引用了许多无法加载的资源(图片、脚本和其他非文本元素),这种情况可解读为 soft 404 错误。无法加载资源的原因包括:资源被屏蔽(遭到 robots.txt 屏蔽)、网页包含的资源过多/过大、各类服务器错误或者资源加载速度缓慢。

网络连接错误和 DNS 错误

网络连接错误和 DNS 错误会对网址在 Google 搜索中的显示情况迅速产生负面影响。 Googlebot 处理网络超时、连接重置和 DNS 错误的方式与处理 5xx 服务器错误的方式类似。如果发生网络连接错误,抓取速度会立即开始减慢,因为网络连接错误表明服务器可能无法处理服务负载。由于 Googlebot 无法访问托管网站的服务器,Google 也尚未从该服务器收到任何内容。缺少内容意味着 Google 无法将已抓取的网址编入索引,并且系统会在几天内从 Google 索引中移除无法访问的已编入索引网址。Search Console 可能会针对每个相应的错误生成错误。

调试网络连接错误

这些错误会在 Google 开始抓取网址前或在 Google 抓取网址期间发生。 由于错误可能会在服务器能响应之前发生,因此没有可提示问题的状态代码,诊断这些错误可能难度更大。如需调试超时和连接重置错误,请执行以下操作:

  • 查看防火墙设置和日志。可能存在过于宽泛的屏蔽规则集。确保 Googlebot IP 地址未被任何防火墙规则屏蔽。
  • 查看网络流量。使用 tcpdumpWireshark 之类的工具捕获和分析 TCP 数据包,并查找指向特定网络组件或服务器模块的异常。
  • 如果找不到任何可疑情况,请与您的托管公司联系

错误可能发生在负责处理网络流量的任何服务器组件中。例如,过载的网络接口可能会丢弃导致超时(无法建立连接)的数据包并重置连接(由于端口被错误地关闭而发送 RST 数据包)。

调试 DNS 错误

导致 DNS 错误最常见的原因是配置错误,但也可能是由于防火墙规则阻止了 Googlebot DNS 查询。如需调试 DNS 错误,请执行以下操作:

  • 检查防火墙规则。确保没有任何 Google IP 被防火墙规则屏蔽,并且允许 UDPTCP 请求。
  • 查看 DNS 记录。请仔细检查您的 ACNAME 记录是否分别指向正确的 IP 地址和主机名。例如:
    dig +nocmd example.com a +noall +answer
    dig +nocmd www.example.com cname +noall +answer
  • 请检查您的所有域名服务器是否指向您网站的正确 IP 地址。例如:
    dig +nocmd example.com ns +noall +answer
    example.com.    86400  IN  NS  a.iana-servers.net.
    example.com.    86400  IN  NS  b.iana-servers.net.
    dig +nocmd @a.iana-servers.net example.com +noall +answer
    example.com.    86400  IN  A  93.184.216.34
    dig +nocmd @b.iana-servers.net example.com +noall +answer
    ...
  • 如果您在过去 72 小时内更改了 DNS 配置,则可能需要等待更改传播到全球 DNS 网络。如需加快传播速度,您可以刷新 Google 的公开 DNS 缓存
  • 如果您运行的是自己的 DNS 服务器,请确保它运行状况良好,并且没有过载。