本文介绍了不同的 HTTP 状态代码、网络连接错误和 DNS 错误对 Google 搜索有何影响。我们在本文中介绍了 Googlebot 在网络上最常遇到的 20 个状态代码,以及最突出的网络连接错误和 DNS 错误,但未介绍一些较奇特的状态代码,例如 418 (I'm a teapot)。本文中提及的所有问题都会在 Search Console 的"抓取统计信息"报告中生成相应的错误或警告。
除非另有说明,否则受支持协议(HTTP 和 FTP)的实验性功能默认不受支持。
HTTP 状态代码
HTTP 状态代码是由托管网站的服务器在对客户端(如浏览器或抓取工具)发出的请求作出响应时生成的。每个 HTTP 状态代码都有不同的含义,但请求结果往往相同。例如,有多个状态代码会发出重定向信号,但它们的结果是相同的。
Search Console 会为 4xx–5xx 范围内的状态代码和失败的重定向 (3xx) 生成错误消息。如果服务器返回 2xx 状态代码,则响应中接收到的内容可能会被考虑编入索引。
HTTP 2xx (success) 状态代码并不能保证一定会编入索引。
HTTP 状态代码 | |
2xx (success) | Google 会考虑将内容编入索引。如果内容表明有错误,例如空网页或错误消息,则 Search Console 会显示软 404 错误。 |
200 (success) | Googlebot 会将内容传递给索引编制流水线。索引编制系统可能会将内容编入索引,但不保证一定会。 |
201 (created) | Googlebot 会等待内容一段时间,然后将其接收的任何内容传递给索引编制流水线。超时时长取决于用户代理,例如,Googlebot(智能手机版)的超时时长可能与 Googlebot Image 的不同。 |
202 (accepted) | |
204 (no content) | Googlebot 会向索引编制流水线发出信号,指示它未收到任何内容。Search Console 可能会在网站的"索引涵盖范围"报告中显示软 404 错误。 |
3xx (redirects) | Googlebot 会跟踪最多 10 次重定向。如果抓取工具在 10 次重定向内没有收到内容,则 Search Console 会在网站的"索引涵盖范围"报告中显示重定向错误。Googlebot 跟踪的重定向次数取决于用户代理;例如,Googlebot(智能手机版)的重定向次数值可能不同于 Googlebot Image。 对于 robots.txt,Google 会按照 RFC 1945 的规定跟踪至少五次重定向,然后便会停止,并将其作为 robots.txt 文件的 404 错误处理。 |
301 (moved permanently) | Googlebot 会跟踪重定向,并且索引编制流水线会将该重定向用作指示重定向目标应是规范网址的强信号。 |
302 (found) | Googlebot 会跟踪重定向,并且索引编制流水线会将该重定向用作指示重定向目标应是规范网址的弱信号。 |
303 (see other) | Googlebot 会向索引编制流水线发出信号,指示内容与上次抓取的内容相同。索引编制流水线可能会重新计算网址的信号,除此之外,此状态代码对索引编制没有任何影响。 |
304 (not modified) | |
307 (temporary redirect) | 等同于 302。 |
308 (moved permanently) | 等同于 301。 |
虽然 Google 搜索会以相同的方式处理这些状态代码,但请注意,它们在语义上是不同的。请使用适合重定向的状态代码,以便其他客户端(例如电子阅读器、其他搜索引擎)可以从中受益。 | |
4xx (client errors) | Google 的索引编制流水线不会考虑将返回 4xx 状态代码的网址编入索引,而已编入索引且返回 4xx 状态代码的网址会从索引中移除。 |
400 (bad request) | 系统对 429 之外的所有 4xx 错误都采用同一种处理方式:Googlebot 向索引编制流水线发出信号,指示内容不存在。 索引编制流水线会将之前已编入索引的网址从索引中移除。 系统不会处理新遇到的 404 网页。抓取频率会逐渐降低。 请勿使用 401 和 403 状态代码限制抓取速度。4xx 状态代码(429 除外)对抓取速度没有影响。 了解如何限制抓取速度。 |
401 (unauthorized) | |
403 (forbidden) | |
404 (not found) | |
410 (gone) | |
411 (length required) | |
429 (too many requests) | Googlebot 会将 429 状态代码视为服务器过载的信号,这被视为服务器错误。 |
5xx (server errors) | 5xx 和 429 服务器错误会提示 Google 抓取工具暂时减慢抓取速度。已编入索引的网址仍会保留在索引中,但最终会被丢弃。 如果 robots.txt 文件返回服务器错误状态代码的时间超过 30 天,Google 会使用 robots.txt 的最后一个缓存副本。如果没有缓存副本,Google 会假定没有任何抓取限制。 |
500 (internal server error) | Googlebot 会降低网站的抓取速度。抓取速度下降幅度与返回服务器错误的具体网址数量成比例。 Google 的索引编制流水线会从索引网址中移除始终返回服务器错误的网址。 |
502 (bad gateway) | |
503 (service unavailable) |
网络连接错误和 DNS 错误
网络连接错误和 DNS 错误会对网址在 Google 搜索中的显示情况迅速产生负面影响。 Googlebot 处理网络超时、连接重置和 DNS 错误的方式与处理 5xx 服务器错误的方式类似。如果发生网络连接错误,抓取速度会立即开始减慢,因为网络连接错误表明服务器可能无法处理服务负载。系统会在几天内从 Google 索引中移除无法访问的已编入索引网址。Search Console 可能会针对每个相应的错误生成错误。
如果您不是自行托管自己的网站,请向托管服务提供商或 CDN 提供商寻求帮助。
调试网络连接错误
这些错误会在 Google 开始抓取网址前或在 Google 抓取网址期间发生。 由于错误可能会在服务器能响应之前发生,因此没有可提示问题的状态代码,诊断这些错误可能难度更大。如需调试超时和连接重置错误,请执行以下操作:
1、查看防火墙设置和日志。可能存在过于宽泛的屏蔽规则集。确保 Googlebot IP 地址未被任何防火墙规则屏蔽。
2、查看网络流量。使用 tCPDump 和 Wireshark 之类的工具捕获和分析 TCP 数据包,并查找指向特定网络组件或服务器模块的异常。
3、如果找不到任何可疑情况,请与您的托管公司联系。
错误可能发生在负责处理网络流量的任何服务器组件中。例如,过载的网络接口可能会丢弃导致超时(无法建立连接)的数据包并重置连接(由于端口被错误地关闭而发送 RST 数据包)。
调试 DNS 错误
1、导致 DNS 错误最常见的原因是配置错误,但也可能是由于防火墙规则阻止了 Googlebot DNS 查询。如需调试 DNS 错误,请执行以下操作:
2、检查防火墙规则。确保没有任何 Google IP 被防火墙规则屏蔽,并且允许 UDP 和 TCP 请求。
3、查看 DNS 记录。请仔细检查您的 A 和 CNAME 记录是否分别指向正确的 IP 地址和主机名。例如:
dig +nocmd example.com a +noall +answer
dig +nocmd www.example.com cname +noall +answer
4、请检查您的所有域名服务器是否指向您网站的正确 IP 地址。例如:
dig +nocmd example.com ns +noall +answerexample.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 +answerexample.com. 86400 IN A 93.184.216.34dig +nocmd @b.iana-servers.net example.com +noall +answer...
5、如果您在过去 72 小时内更改了 DNS 配置,则可能需要等待更改传播到全球 DNS 网络。
如需加快传播速度,您可以刷新 Google 的公开 DNS 缓存。
6、如果您运行的是自己的 DNS 服务器,请确保它运行状况良好,并且没有过载。