1. 您的位置:首页 > seo技术 >内容

使用服务器日志来发现SEO问题

有时,网站存在搜索引擎优化问题,而Google Search Console,Google Analytics(分析)和现成的SEO工具无法找到这些问题。 发生这种情况时,我通常会使用一种老式的方法:Web服务器日志。

什么是Web服务器日志?

您可能会假设Google Analytics(分析)或类似的分析平台记录了您对网站的每次访问。 但是,分析平台不会记录包括搜索引擎机器人在内的大多数机器人访问。

但是,Web服务器日志记录了人类或机器人对您网站的每次访问。 将网络服务器日志视为站点上所有活动的自动日志。 它们通常包括访问者的原始IP地址,浏览器用户代理,请求的页面以及访问者来自的页面。

服务器日志的主要挑战是信息是原始格式。 您需要采取额外的步骤来分析数据。

例如,这是Apache组合日志格式的样子。

 66.249.64.34-坦率[ 05 / Apr / 2017:13:55:36 -0700]“ GET / product-123 HTTP / 1.1” 200 2326“ http://www.webstore.com/home.html ”“ Mozilla / 5.0(兼容; Googlebot /2.1;+http://www.google.com/bot.html)”

我强调了日志的关键部分:访问者的IP地址,访问时间,访问页面,引荐页面以及访问者或漫游器。 您可以使用IP地址来验证Googlebot的访问。

3使用服务器日志的示例

这是三个最近的示例,在这些示例中,我使用Web服务器日志来了解SEO问题的根源。

第一个例子来自我在一家跨国公司的工作。 Google搜索控制台>抓取>站点地图在XML站点地图中报告了超过100,000个页面,但Google对其中的索引编制不足20,000。 但是, Search Console> Google索引>索引状态报告了超过70,000个页面被索引。

这怎么可能?

Google可以为许多重复的页面或旧页面建立索引,而错过网站的“真实”页面。 困难的部分是确定哪些重复页面被索引而哪些实际页面没有被索引。

不幸的是,Google Search Console不会提供已索引网址的列表,也不会告诉您XML网站地图中的哪些页面未被索引。 为了解决这个问题,我们需要回答这两个问题。

在这种情况下,我收到了从一月底到三月初的服务器日志。 在对它们进行分析之后,我们了解到在此期间Google抓取了XML网站地图中不到9%的页面。

在此客户的情况下,没有抓取91.6%的站点地图URL。

在此客户的情况下,未抓取91.6%的站点地图URL。

当我们仔细查看未爬网的页面时,我们发现它们中的大多数具有完全相同的内容和模板。 唯一的区别是产品名称。 由于页面内容相同,因此Googlebot似乎没有对其进行爬网。 除此之外,我们确认Googlebot浪费了时间在机器人陷阱上。

之前,我已经解决了机器人陷阱或无限的爬网空间。 它们通常出现在具有广泛数据库的网站(例如大多数电子商务平台)中,并使搜索引擎机器人继续无休止地获取页面。 分面导航或导航导航就是一个例子,它可以产生几乎无限数量的选项。 无限的抓取空间会浪费Googlebot的抓取预算,并可能阻止对重要页面进行索引。

在这种情况下,解决方案是一个痛苦的过程,即从最畅销的产品开始为每个页面编写独特的内容。 (衡量对独特内容的投资可以帮助确定这样做是否有意义。)

第二个示例来自汽车行业的一个大型站点。 我们将网站迁移到HTTPS,并遇到许多重新编制索引的延误,这损害了网站的自然搜索排名。

这种情况尤其具有挑战性,因为我们怀疑该站点存在严重的僵尸陷阱,但我们必须处理来自多个Web服务器的TB的日志数据,按页面类型对页面进行分类,并模拟Search Console>抓取> URL参数的功能以了解问题。

按页面类型进行的细分使我们可以将漫游器陷阱问题的范围缩小到“ Year-Make-Model-Category” URL组。 接下来,我们想看看由于URL参数而导致抓取的页面异常数量是否会导致我们进入机器人陷阱。

我们的日志分析帮助我们发现了问题。 我们找到了三个未出现在Search Console>抓取> URL参数列表中的新URL参数,但它们获得的访问次数超出了预期。 (对URL参数进行分类有助于Google避免对重复的URL进行爬网。)事实上,它们并未在Search Console>抓取> URL参数中列出,这使我们无法解决问题。 我以为Google会列出我们需要担心的所有参数,但这是错误的。 我们有接近100个问题URL参数。

URL参数的主题可能令人困惑。 URL参数是在页面的URL中动态设置的,可以由其模板和数据源来驱动。 URL参数由键和由等号(=)分隔并由&符号(&)组成的值组成。 第一个参数始终位于URL中的问号之后。

实际上,每个电子商务平台都具有从数据库内容自动生成的动态页面。 这些动态页面通常使用URL参数来帮助电子商务应用程序显示正确的内容。 一个示例是分页类别页面,如下所示。

  • http://www.webstore.com/shoes
  • http://www.webstore.com/shoes?page=2
  • http://www.webstore.com/shoes?page=3
  • http://www.webstore.com/shoes?page=4

在这种情况下,“页面”是URL参数。 Google认为它是有效参数,因为它会更改或影响页面内容。 在Google Search Console中,我们将在抓取> URL参数中设置参数。 这将指示Google抓取每个页面,以便它可以选择规范标签和分页标签。

在Search Console>抓取> URL参数中设置“页面”参数。

Search Console>抓取> URL参数中设置“页面”参数。 点击图片放大。

另一个示例是我们添加到页面中以进行跟踪的参数,以了解例如哪些营销活动的效果更好。

  • http://www.webstore.com/shoes?utm_source=Google
  • http://www.webstore.com/shoes?utm_source=Bing
  • http://www.webstore.com/shoes?utm_source=Facebook

在这种情况下,参数是“ utm_source”,这是标准的Google Analytics(分析)跟踪参数。 它不会影响页面内容。 Google认为这是一个被动参数。

参数2

Search Console>抓取> UTM参数中设置“ utm_source”。 Google认为这是一个被动参数。 点击图片放大。

最后一个示例涉及一个受欢迎的Web发布者。 我们面临的挑战是,我们知道网站上存在重复的页面,但是当我们运行蜘蛛工具ScreamingFrog时,由于找不到内部链接,因此找不到它们。 但是,当我们在Google中搜索时,我们可以在搜索结果中看到一些-确认它们已被索引。 猜测要检查的URL并非特别可扩展。 Web日志可助您一臂之力!

我们从2月底开始下载日志数据,直到3月底为止,并专注于获取以下问题的答案:Googlebot抓取了哪些URL,这些URL未包含在XML网站地图中?

进行这种类型的分析时,如果该站点是博客,则可以期望看到一个类别的文章列表以及具有冗余URL参数的页面,因为这些页面通常不包含在XML站点地图中。 我通常建议将列表页面(例如类别中的文章列表)包括在单独的XML站点地图中(即使您为其分配了规范标签),因为它有助于确认是否已对它们进行索引。

使用服务器日志,我们很惊讶地发现许多无用的页面具有与站点上其他合法页面相同的页面标题,但没有唯一的内容。 我们不知道这些页面是否存在,但是Googlebot能够找到它们,但不幸的是,对其中许多进行了索引。 因此,该站点需要进行一些认真的清理工作才能删除无用的页面。

顺便说一句,由于以下原因,Googlebot可以找到蜘蛛工具(如ScreamingFrog)无法找到的网页。

  • Google使用来自网络上任何站点的链接,而不仅仅是内部链接。
  • 创建新内容时,WordPress网站和大多数博客平台会ping搜索引擎。
  • Google的记忆力很强。 如果该网页是过去抓取的,则Google将来可能会对其进行重新抓取
  • Google并未确认这一点,但可以从Chrome或Google Analytics(分析)日志中发现新页面。

转换原始日志数据

我们为所有客户的日志分析编写代码。 这是一个简化的两步入门过程。

首先,使用正则表达式“ regex”将日志数据转换为结构化数据格式,例如CSV。 这是在PHP中工作的正则表达式。

 ^(\ S +)\ S + \ S + \ [([[^ \]] +)\]“ [AZ] + \ s([^ \ s] +)[^”] +“ \ d + \ d +” [^“ ] *“”([[^“] *)” $

正则表达式可能很复杂,尤其是如果您不是Web开发人员。 简而言之,正则表达式就是搜索模式。 您可能熟悉通配符。 一个示例是在计算机命令行中使用术语* .docx列出目录中的所有Microsoft Word文档。 正则表达式允许类似但更复杂的搜索。

使用正则表达式101验证并了解上述正则表达式的工作原理。 在工具中输入上面的正则表达式。 您还需要输入测试字符串。 对于此示例,我将使用本文前面加下划线的Apache日志示例。

使用RegEx 101,我们可以将本文前面引用的服务器日志条目粘贴为“测试字符串”,并应用上述正则表达式。结果就是我们提取的数据。 <em>点击图片放大。</ em>

使用RegEx 101,我们可以将本文前面引用的服务器日志条目粘贴为“测试字符串”,并应用上面的正则表达式。 结果就是我们提取的数据。 点击图片放大。

在这种情况下,该工具使用上述参考服务器日志条目上的正则表达式搜索模式来提取Googlebot IP,访问日期,访问页面和浏览器用户代理(在本例中为Googlebot)。

如果您在右侧的“匹配信息”部分中向下滚动,则会看到提取的信息。 该正则表达式特别适用于Apache组合日志格式。 例如,如果您的Web服务器是Microsoft IIS或Nginx,则此正则表达式将不起作用。

下一步是编写一个简单的PHP脚本,一次读取一行日志文件,然后执行此正则表达式来搜索和捕获所需的数据点。 然后,将它们写入CSV文件。 您可以在此处找到无示例脚本。 该代码已有六年的历史,但是,正如我已经说过的那样,Web服务器日志已经过时了。

在获得CSV格式的日志条目之后,请使用商业智能工具(用于检索和分析数据)来读取文件并获取问题的答案。 我使用Tableau,这很昂贵。 但是,还有许多其他以免费套餐开始的选项,例如Microsoft Power BI。

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。如若转载,请注明出处:http://www.botadmin.cn/sylc/11467.html