本文介绍了不同的 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 错误。
|
|||||||||||
3xx (redirection) # |
Googlebot 会跟踪最多 10 次重定向。如果抓取工具在 10 次重定向内没有收到内容,则 Search Console 会在网站的“网页索引编制”报告中显示重定向错误。Googlebot 跟踪的重定向次数取决于用户代理;例如,Googlebot(智能手机版)的重定向次数值可能不同于 Googlebot Image。
对于 robots.txt,Googlebot 会按照 RFC 1945 的规定跟踪至少五次重定向,然后便会停止,并将其作为 robots.txt 文件的 404 错误处理。 Googlebot 重定向网址中收到的任何内容都会被忽略,最终目标网址的内容会被考虑编入索引。
|
|||||||||||
4xx (client errors) # |
Google 的索引编制流水线不会考虑将返回 4xx 状态代码的网址编入索引,而已编入索引且返回 4xx 状态代码的网址会从索引中移除。
Googlebot 从会返回 4xx 状态代码的网址收到任何内容都将被忽略。
|
|||||||||||
5xx (server errors) # |
5xx 和 429 服务器错误会提示 Google 抓取工具暂时减慢抓取速度。已编入索引的网址仍会保留在索引中,但最终会被丢弃。
如果 robots.txt 文件返回服务器错误状态代码的时间超过 30 天,Google 会使用 robots.txt 的最后一个缓存副本。如果没有缓存副本,Google 会假定没有任何抓取限制。 Googlebot 从会返回 5xx 状态代码的网址收到任何内容都将被忽略。
|
soft404错误 #
soft 404 错误是一个网址,会在返回的页面中向用户表明目标网页不存在,同时还会返回 200 (success) 状态代码。在某些情况下,软 404 可能是一个不含任何主要内容的页面或是一个空页面。
此类网页可能是由网站的网络服务器、内容管理系统或用户的浏览器出于各种原因生成的。例如:
- 缺少服务器端包含 (SSI) 文件。
- 与数据库的连接中断。
- 空的内部搜索结果页。
- 未加载或缺少 JavaScript 文件。
返回 200 (success) 状态代码,但在网页上显示或建议了错误消息或某种类型的错误,这会导致糟糕的用户体验。用户可能会认为该网页是正常运行的网页,但之后却出现了某种错误。此类网页不会显示在搜索结果中。
当 Google 算法根据网页的内容检测到该网页实际上是错误网页时,Search Console 会在网站的“网页索引编制”报告中显示 soft 404 错误。
修正soft404错误 #
您可以通过多种方式解决 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 地址未被任何防火墙规则屏蔽。
- 查看网络流量。使用 tcpdump 和 Wireshark 之类的工具捕获和分析 TCP 数据包,并查找指向特定网络组件或服务器模块的异常。
- 如果找不到任何可疑情况,请与您的托管公司联系。
错误可能发生在负责处理网络流量的任何服务器组件中。例如,过载的网络接口可能会丢弃导致超时(无法建立连接)的数据包并重置连接(由于端口被错误地关闭而发送 RST 数据包)。
调试DNS错误 #
导致 DNS 错误最常见的原因是配置错误,但也可能是由于防火墙规则阻止了 Googlebot DNS 查询。如需调试 DNS 错误,请执行以下操作:
- 检查防火墙规则。确保没有任何 Google IP 被防火墙规则屏蔽,并且允许 UDP 和 TCP 请求。
- 查看 DNS 记录。请仔细检查您的 A 和 CNAME 记录是否分别指向正确的 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 服务器,请确保它运行状况良好,并且没有过载。