1. 首页
  2. 网络营销赋能
  3. 海外营销

用于调试奇怪的技术SEO问题的8点检查表

偶尔,问题会落在你的桌面上,这有点不同寻常。你没有简单答案的东西。你去了你的大脑,你的大脑什么都没有。

通过一点关键词研究和基本技术配置无法解决这些问题。这些是兔子洞深入的技术搜索引擎优化问题的类型。

这些情况的本质违反了一个清单,但是出于同样的原因我们在飞机上拥有它们是有用的:即使我们中最好的人能够而且会忘记事情,并且清单将为您提供挖掘的地方。


想象一些奇怪的SEO问题的例子?以下是您阅读时要考虑的四个示例。我们最后会回答他们。

1.为什么Google没有在产品页面上显示五星级标记?

  • 这些页面具有服务器呈现的产品标记,并且还具有Feefo产品标记,包括附加在客户端的评级。
  • Feefo评级片段在Fetch&Render中成功呈现,再加上适合移动设备的工具。
  • 当您将渲染的DOM放入结构化数据测试工具时,两个结构化数据都会出现错误。

2.为什么Bing不会在评论页面上显示5星标记?

  • 客户和竞争对手的评论页面都在谷歌上有丰富的评级片段。
  • 所有竞争对手都对Bing进行了丰富的评分; 但是,客户没有。
  • 评论页面在Google的结构化数据测试工具上正确验证了评分架构,但在Bing上没有。

3.为什么页面被索引为无索引标记?

  • 谷歌在一个大型模板中为客户端索引了头部中带有服务器端呈现的无索引标记的页面。

4.为什么网站上的任何页面在大约20-50%的时间内返回302,但仅限于爬虫?

  • 一个网站随机抛出302个错误。
  • 这种情况从未发生在浏览器中,只发生在爬虫中。
  • 用户代理没有区别; 位置或饼干也没有区别。

最后,快速说明。完全有可能这个清单中的一些不适用于每个场景。那完全没问题。这意味着您可以检查所有内容的流程,而不是您应该检查的所有内容。

完整的清单

用于调试奇怪的技术SEO问题的8点检查表

您可以在此处下载核对表模板(只需制作Google表格的副本):

获取清单电子表格

预核对表检查

它真的重要吗?

这个问题只会影响很少的流量吗?它只是在少数页面上,你已经有一个很大的其他行动列表,将有助于该网站?你可能需要放弃它。

我知道,我也讨厌它。我也想做对,把这些东西挖出来。但是在六个月的时间里,当你解决了二十个复杂的搜索引擎优化兔子洞并且你的网站因为没有重新编写标题标签而保持平稳时,你仍然会被解雇。

但希望事实并非如此,在这种情况下,从那时起!

你在哪里看到这个问题?

我们不想浪费很多时间。你有没有听过这句话?如果你听到蹄子,它可能不是斑马。

我们即将完成的过程非常复杂,如果你想继续下去,完全由你自行决定。只要确保你没有忽视可以解决问题的明显事物。以下是我遇到的一些常见问题,主要是马匹。

  1. 你应该在哪里表现不佳。
    1. 当一个网站表现不佳时,人们喜欢寻找借口。奇怪的谷歌废话可能是一个非常方便的事情。实际上,它通常是一个糟糕的网站,更高的竞争和一个失败的品牌的一些组合。马。
  2. 你遇到了突然的交通流量下降。
    1. 确实发生了一些事情,但这可能不是你的清单。有很多常识检查清单。我最近写过关于诊断流量下降的文章 – 首先检查一下。
  3. 错误的页面是错误查询的排名。
    1. 根据我的经验(这应该是整篇文章的前言),这通常是一个基本问题,其中一个网站定位不佳或大量的自相残杀。可能是一匹马。

这些因素使您更有可能遇到更复杂的问题,需要您穿上调试鞋:

  • 一个拥有大量客户端JavaScript的网站。
  • 拥有更多遗产的更大,更旧的网站。
  • 您的问题与社区知识较少的新Google资源或功能有关。

1.首先选择一些示例页面。

选择几个可以使用的示例页面 – 表现出您遇到的任何问题的页面。不,这不具代表性,但我们会稍微回过头来看看。

当然,如果它只影响很少的页面,那么它实际上可能具有代表性,在这种情况下我们很好。这绝对重要,对吗?你不只是跳过上面的步骤?好的,很酷,让我们继续前进。

2. Google可以抓取一次页面吗?

首先,我们检查Googlebot是否可以访问该页面,我们将其定义为200状态代码。

我们将以四种不同的方式检查任何常见问题:

  1. Robots.txt打开Search Console并检查robots.txt验证程序。
  2. 用户代理:打开开发工具并验证您是否可以使用Googlebot和Googlebot Mobile打开网址。
    1. 要获取用户代理切换器,请打开Dev Tools。
    1. 检查控制台抽屉是否打开(切换是Esc键)
    1. 点击…并打开“网络条件”
    1. 在这里,选择您的用户代理!
  1. IP地址:确认您可以使用移动测试工具访问该页面。(这将来自Google使用的其中一个IP;您从计算机上执行的任何检查都不会。)
  2. 国家:移动测试工具将从我看到的美国知识产权访问,所以我们一石二鸟。但Googlebot偶尔会从非美国IP中抓取,因此使用VPN来检查是否可以从任何其他相关国家/地区访问该网站也是值得的。
    1. 我之前使用过HideMyAss,但无论你有什么VPN都能正常工作。

我们现在应该知道Googlebot是否正在努力获取该页面一次。

我们发现了什么问题吗?

如果我们可以通过上面的简单检查重新创建失败的抓取,那么很可能Googlebot可能无法一致地获取我们的页面,这通常是其中一个基本原因。

但它可能不是。由于技术的性质,许多问题是不一致的。;)

我们告诉谷歌两件事吗?

接下来:谷歌可以找到该页面,但是我们是通过告诉它两个不同的东西来混淆它吗?

根据我的经验,这是最常见的,因为有人搞砸了索引指令。

通过“索引指令”,我指的是任何标记,它定义索引中应该排名的正确索引状态或页面。这是一个非详尽的清单:

  • 无指标
  • 典范
  • 移动备用标签
  • AMP备用标签

提供混合消息的一个示例是:

  • 无索引页面A.
  • 页面B规范到页面A.

要么:

  • 页面A在带有参数的A的标题中具有规范
  • 页面A在体内具有规范,没有参数

如果我们提供混合消息,那么谷歌将如何回应并不清楚。这是开始看到奇怪结果的好方法。

检查上面列出的索引指令的好地方是:

  • 网站地图
    • 示例:移动备用标记可以位于站点地图中
  • HTTP标头
    • 示例:可以在标题中设置Canonical和meta robots。
  • HTML头
    • 这是你可能正在寻找的地方,你需要这个来进行比较。
  • JavaScript呈现与硬编码指令
    • 您可能在页面源中设置了一个内容,然后使用JavaScript呈现另一个内容,即您将在HTML源代码中看到与呈现的DOM不同的内容。
  • Google Search Console设置
    • 搜索控制台设置用于忽略可能与页面上的索引标记冲突的参数和国家/地区本地化。

快速放弃渲染的DOM

这个页面上有很多关于渲染DOM的提及(18,如果你很好奇的话)。既然我们已经有了第一个,那么这里有一个快速回顾一下这是什么。

加载网页时,第一个请求是HTML。这是您在HTML源代码中看到的内容(右键单击网页并单击“查看源代码”)。

这是在JavaScript对页面做了任何事情之前。这并不是什么大问题,但现在很多网站都非常依赖JavaScript,大多数人都不相信最初的HTML。

呈现DOM是页面的技术术语,当所有JavaScript都已呈现并且所有页面更改都已完成时。您可以在Dev Tools中看到这一点。

在Chrome中,您可以通过右键单击并按下inspect元素(或Ctrl + Shift + I)来获取该功能。Elements选项卡将显示正在呈现的DOM。当它停止闪烁和改变时,你就有了渲染的DOM!

4. Google可以一致地抓取页面吗?

要了解Google看到了什么,我们需要获取日志文件。此时,我们可以查看它是如何访问该页面的。

除此之外:使用日志本身就是一个完整的帖子。我已经用BigQuery编写了日志分析指南,我也非常推荐尝试Screaming Frog Log Analyzer,它在处理日志的大量复杂性方面做得很好。

当我们查看爬行时,我们可以执行三项有用的检查:

  1. 状态代码:随时间绘制状态代码。当您检查网址时,Google是否会看到不同的状态代码?
  2. 资源: Google是否正在下载该页面的所有资源?
    1. 它是否下载了生成页面所需的所有特定于站点的JavaScript和CSS文件?
  3. 页面大小跟进:获取所有页面和资源的最大值和最小值并进行区分。如果您发现差异,那么Google可能无法完全下载所有资源或页面。(帽子提示到@ohgm,我第一次听到这个简洁的提示)。

我们发现了什么问题吗?

如果Google在我们的日志文件中没有持续200秒,但我们可以在尝试时访问该页面,那么Googlebot和我们之间显然仍然存在一些差异。这些差异可能是什么?

  1. 它会比我们爬行更多
  2. 它显然是一个机器人,而不是假装成机器人的人
  3. 它会在一天中的不同时间爬行

这意味着:

  • 如果我们的网站正在进行聪明的僵尸程序拦截,那么它可能能够区分我们和Googlebot。
  • 由于Googlebot会给我们的网络服务器带来更多压力,因此它可能会有不同的表现。当网站有很多机器人或访客一次访问时,他们可能会采取某些措施来帮助保持网站在线。他们可能会打开更多的计算机来为网站供电(这称为扩展),他们也可能尝试对请求大量页面的用户进行速率限制,或者提供缩减版本的页面。
  • 服务器定期运行任务; 例如,列表网站可能会在01:00运行每日任务来清理所有旧列表,这可能会影响服务器性能。

弄清楚这些周期性影响正在发生的事情将是繁琐的; 您可能需要与后端开发人员交谈。

根据您的技能水平,您可能不确切知道在哪里引导讨论。讨论的有用结构通常是讨论请求如何通过您的技术堆栈,然后查看我们上面讨论过的边缘情况。

  • 重载下的服务器会发生什么?
  • 什么时候重要的计划任务发生?

与以下内容进行对话的两条有用信息:

  1. 根据日志中问题的规律性,通常尝试使用爬虫以与Google正在使用的相同速度/强度抓取网站来重新创建问题,以查看是否可以找到/导致同样的问题。这并不总是可行的,具体取决于网站的大小,但对于某些网站而言,这将是可能的。能够始终如一地重新创建问题是解决问题的最佳方法。
  2. 但是,如果您不能,那么请尝试提供Googlebot看到问题的确切时间段。这将为开发人员提供将问题与其他日志联系起来的最佳机会,让他们调试正在发生的事情。

如果Google能够持续抓取页面,那么我们将进入下一步。

5. Google是否会在一次性基础上看到我能看到的内容?

我们知道Google正在抓取该页面。下一步是尝试找出Google在页面上看到的内容。如果你有一个JavaScript密集的网站,你可能以前曾经对这个问题感到头疼,但即使你不这样做,这有时仍然是一个问题。

我们遵循与以前相同的模式。首先,我们尝试重新创建一次。以下工具将让我们这样做:

  • 获取和渲染
    • 显示:在图像中呈现DOM,但仅返回页面源HTML以供您阅读。
  • 适合移动设备的测试
    • 显示:渲染DOM并返回渲染的DOM供您阅读。
    • 这不仅会显示您呈现的DOM,还会跟踪任何控制台错误。

Fetch&Render,移动设备友好的测试工具和Googlebot之间有区别吗?不是真的,除了超时(这就是我们后面的步骤!)。如果您有兴趣,可以在这里全面分析它们之间的区别。

一旦我们得到了这些输出,我们将它们与我们在浏览器中通常看到的相比较。我建议使用像Diff Checker这样的工具来比较这两者。

我们发现了什么问题吗?

如果我们在这一点上遇到有意义的差异,那么根据我的经验,它通常来自JavaScript或cookie

为什么?

  • Googlebot通过在页面请求之间清除Cookie进行抓取
  • Googlebot使用Chrome 41进行渲染,但不支持所有现代JavaScript。

我们可以通过以下方式隔离每一个:

  • 加载页面没有cookie。这可以简单地通过使用新的隐身会话加载页面并将此处呈现的DOM与我们普通浏览器中呈现的DOM进行比较来完成。
  • 使用移动测试工具查看Chrome 41页面,并与我们通常使用Inspect Element查看的渲染DOM进行比较。

然而,我们可以使用像Diff Checker这样的东西来比较它们,这将使我们能够发现任何差异。您可能希望使用HTML格式化程序来帮助更好地排列它们。

我们还可以看到使用移动友好测试工具抛出的JavaScript错误,如果您对JavaScript充满信心,这可能会特别有用。

如果使用这些知识和这些工具,我们可以重新创建错误,那么我们就可以复制一些内容,并且我们更容易将其作为一个可以修复的错误交给开发人员。

如果我们在这里看到一切正确,我们将继续下一步。

6.谷歌究竟看到了什么?

Google看到的内容可能与我们使用上一步中的工具重新创建的内容不同。为什么?几个主要原因:

  • 重载的服务器可能有各种奇怪的行为。例如,他们可能会返回200个代码,但可能会返回默认页面。
  • JavaScript与正在抓取的网页分开呈现,而Googlebot可能比使用测试工具花费更少的时间来呈现JavaScript。
  • 在创建网页时经常会有很多缓存,这可能会导致问题。

我们在没有谈论时间的情况下已经走到了尽头!页面不会立即被抓取,并且抓取的页面不会立即编入索引。

快速侧边栏:什么是缓存?

如果你进入这个阶段,缓存通常是一个问题。与JS不同,它在我们的社区中没有被讨论过,所以如果你不熟悉的话,值得更多的解释。缓存存储了一些内容,以便下次可以更快地使用它。

当您请求网页时,会生成大量计算以生成该页面。如果您在完成页面后刷新页面,那么重新运行所有相同的计算将是非常浪费的。相反,服务器通常会保存输出并为您提供输出而无需重新运行它们。保存输出称为缓存。

我们为什么要知道这个?好吧,我们此时已经很好地进入了杂草,因此可能是缓存配置错误并且错误的信息被返回给用户。

缓存方面的初学者资源并不多,而且更深入。但是,我发现这篇关于缓存基础知识的文章是更友好的一篇。它很好地介绍了一些基本类型的缓存。

我们怎样才能看到Google实际使用的内容?

  • 谷歌的缓存
    • 显示:源代码
    • 虽然这不会向您显示渲染的DOM,但它会向您显示Googlebot在访问该页面时实际看到的原始HTML。你需要在JS禁用的情况下检查这个; 否则,在打开它时,您的浏览器将在缓存版本上运行所有JS。
  • 网站搜索特定内容
    • 显示:一小段渲染内容。
    • 通过在页面上搜索特定短语,例如inurlexample.com/url“JS呈现文本,您可以看到Google是否设法索引特定的内容片段。当然,它只适用于可见文本并且错过了很多内容,但它总比没有好!
    • 更好的是,使用等级跟踪器执行相同的操作,以查看它是否随时间而变化。
  • 存储实际渲染的DOM
    • 显示:呈现DOM
    • DeepCrawl的Alex撰写了关于从Googlebot保存渲染DOM的文章。TL; DR版本:Google将呈现JS并发布到端点,因此我们可以让它提交它所看到的页面的JS呈现版本。然后我们可以保存,检查它,看看出了什么问题。

我们发现了什么问题吗?

再一次,一旦我们发现问题,就该去和开发人员交谈了。这次谈话的建议与最后一次建议相同 – 我所说的一切仍然适用。

您应该参与此对话的其他知识包括:Google如何运作以及它可能在哪里挣扎。虽然您的开发人员会了解您网站的技术细节及其构建方式,但他们可能不太了解Google的工作原理。这可以帮助您更快地找到答案。

显而易见的来源是Google自己提供的资源或演示文稿。在已经出现的各种资源中,我发现这两个资源是一些更有用的资源,用于深入了解第一原则:

  • 这个优秀的演讲,谷歌如何运作 – 保罗哈尔,是一个必须倾听。
  • 在最近的IO会议上,John Mueller和Tom Greenway就Google如何呈现JavaScript进行了有用的演示。

但谷歌将会发表的言论与SEO社区在实践中看到的内容之间往往存在差异。人们在我们行业中不知疲倦地进行的所有SEO实验也可以帮助提供一些见解。这里有太多的列表,但这里有两个很好的例子:

  • 谷歌确实尊重JS规范 – 例如,Eoghan Henn在这里做了一些很好的挖掘,这表明谷歌尊重JS规范。
  • Google如何索引不同的JS框架? – BartoszGóralewicz去年广泛阅读的另一个很好的例子,研究Google如何处理不同的框架。

7. Google可以将您的网站聚合在其他网站上吗?

如果我们达到了这一点,我们很高兴我们的网站运行顺利。但并非所有问题都可以在您的网站上解决; 有时你必须关注更广阔的景观和它周围的SERP。

最常见的是,我在这里寻找的是:

  • 与出现问题的页面相似/重复的内容。
    • 这可能是故意的重复内容(例如联合内容)或无意的(竞争对手的抓取或意外索引的网站)。

无论哪种方式,他们几乎总是通过在谷歌进行精确搜索找到。即从您的页面中获取相对特定的内容并在引号中搜索它。

你有没有发现任何问题?

如果您发现了许多其他确切的副本,那么它们可能会导致问题。

我想到的最好的描述是“你在这里发现了一个问题吗?”:你认为谷歌是否正在将类似页面聚合在一起而只显示一个?如果是的话,是否选择了错误的页面?

这不仅仅适用于传统的Google搜索。您可以在Google Jobs,Google News等上找到它的一个版本。

举个例子,如果您是经销商,您可能会发现内容没有排名,因为还有另一个更具权威性的经销商,他们始终首先发布相同的商家信息。

有时您会始终如一地看到这一点,而有时候聚合可能会随着时间而变化。在这种情况下,您需要一个等级跟踪器,用于您正在处理的任何Google财产。

来自Pi Datametrics的Jon Earnshaw 就后者(围绕可疑的SERP通量)做了很好的讨论,值得关注。

一旦你发现了问题,你可能需要尝试找出如何绕过它,但最常用的因素通常是:

  • 内容重复数据删除
  • 发现速度(通常可以通过显示出现的所有新内容的24小时RSS提要来改进)
  • 降低企业联合组织

8.一些其他可能的嫌犯的综述

如果你已经走到这一步,那么我们肯定:

  • Google可以按预期持续抓取我们的网页。
  • 我们向Google发送有关页面状态的一致信号。
  • 谷歌一直在按照我们的预期呈现我们的网页。
  • Google正在从网络上可能存在的任何重复项中挑选正确的页面。

你的问题仍然没有解决?

重要吗?

好吧,拍。

随意雇用我们……?

尽管我喜欢这篇文章列出每一个SEO问题,但这并不实际,所以要完成这篇文章,让我们来看看两个更常见的问题和原则,这些问题和原则在那些问题的答案之前并不适合其他地方。我们在开头列出的四个问题。

无效/构造不良的HTML

您和Googlebot可能会看到相同的HTML,但它可能无效或错误。Googlebot(以及任何抓取工具)必须在不遵循HTML规范时提供解决方法,有时会导致奇怪的行为。

发现它的最简单方法是通过对渲染的DOM工具进行调整或使用HTML验证器。

W3C验证器非常有用,但会引发很多您不关心的错误/警告。最接近我可以给出哪一个有用的摘要的一行是:

  • 寻找错误
  • 忽略与属性有关的任何事情(不会总是适用,但通常是真的)。

这个典型的例子就是打破头脑。

头部代码中不允许使用iframe,因此Chrome将结束头部并启动正文。不幸的是,它需要标题和规范,因为它们落后于它 – 所以Google无法阅读它们。头部代码应该在不同的地方结束。

奥利弗梅森写了一篇很好的帖子,解释了一个更微妙的版本,静静地打破了头脑。

如果有疑问,差异

永远不要低估尝试将两个事物逐行与Diff Checker之类的差异进行比较的能力。它不适用于所有东西,但是当它发挥作用时它是强大的。

例如,如果Google突然停止显示您的精选标记,请尝试在QA环境或Wayback Machine中针对历史版本对您的页面进行区分。


回答我们原来的4个问题

是时候回答这些问题了。这些都是我们客户在Distilled带给我们的所有问题。

1.为什么Google没有在产品页面上显示五星级标记?

Google正在看到服务器呈现的标记和客户端呈现的标记; 但是,服务器呈现方面优先。

删除服务器呈现的标记意味着5星标记开始出现。

2.为什么Bing不会在评论页面上显示5星标记?

问题来自对schema.org的引用。

        <div itemscope =“”itemtype =“https://schema.org/Movie”>

        </ DIV>

        <p> <h1 itemprop =“name”>头像</ h1>

        </ p>

        <p> <span>导演:<span itemprop =“director”>詹姆斯卡梅隆</ span>(1954年8月16日出生)</ span>

        </ p>

        <p> <span itemprop =“genre”>科幻小说</ span>

        </ p>

        <p> <a href=”../movies/avatar-theatrical-trailer.html” itemprop=”trailer”>预告片</a>

        </ p>

        <P> </ DIV>

        </ p>

我们将标记与竞争对手区分开来,唯一的区别是我们在itemtype中引用了schema.org的HTTPS版本,这导致Bing不支持它。

来吧,Bing。

3.为什么页面被索引为无索引标记?

答案就是这篇文章。这是一个打破头部的情况。

开发人员在头部安装了一些广告技术并插入了非标准标签,即不是:

  • <TITLE>
  • <风格>
  • <碱>
  • <链路>
  • 的<meta>
  • <SCRIPT>
  • <NOSCRIPT>

这导致头部过早结束,并且无索引标签留在未读取的身体中。

4.为什么网站上的任何页面在大约20-50%的时间内返回302,但仅限于爬虫?

这需要一些时间来弄明白。客户端有一个旧的遗留网站,有两个服务器,一个用于博客,另一个用于网站的其余部分。此问题在博客从子域(blog.client.com)迁移到子目录(client.com/blog/…)后不久就开始发生。

在地面上一切都很好; 如果用户请求任何单独的页面,那一切看起来都不错。抓取所有博客网址以检查他们是否已重定向。

但是我们注意到在Search Console中标记的错误急剧增加,并且在例行的站点范围内爬行时,许多在手动检查时很好的页面都会导致重定向循环。

我们使用Fetch和Render进行了检查,但是再一次,页面都很好。

最后,事实证明,当一个博客页面(实际上只有一个爬虫可以快速实现)之后非常快速地请求非博客页面时,非博客页面的请求将被发送到博客服务器。

然后,这些将被长期遗忘的重定向规则捕获,该规则将已删除的博客帖子(或其他duff URL)重定向到根目录。反过来,这是由一个全面的HTTP到HTTPS 301重定向规则捕获的,该规则将再次从博客服务器请求,从而使循环永久化。

例如,通过https://www.client.co m / category / 快速请求https://www.client.com/blog/将导致:

  • 302到http://www.client.com – 这是将已删除的博客帖子重定向到根目录的规则
  • 301到https://www.client.co m – 这是一揽子HTTPS重定向
  • 302到http://www.client.com – 博客服务器不知道HTTPS非博客主页,它重定向回HTTP版本。冲洗并重复。
免责声明:本文仅代表作者个人观点,与穷思笔记网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。

发表评论

登录后才能评论

联系我们

 

在线咨询:点击这里给我发消息

邮件:2267450086@qq.com

QR code