【问题标题】:Prevent Googlebot from running a function阻止 Googlebot 运行函数
【发布时间】:2011-09-27 08:24:21
【问题描述】:

我们在我们的网站上实施了一项新的访问次数功能,当访问我们网站上的公司资料时,该功能会在我们的视图数据库中保存一行。这是使用每次加载页面(公司简介)时运行的服务器端“/addVisit”函数完成的。不幸的是,这意味着我们昨晚有超过 400 次来自 Googlebot 的访问。

由于我们确实希望 Google 将这些网页编入索引,因此我们无法使用 robots.txt 在这些网页上排除 Googlebot。

我还了解到使用 jQuery $.get() 运行此函数不会停止 Googlebot。

唯一可行的解​​决方案是排除已知的机器人 IP 还是有选项?

或者可能使用带有 robots.txt 排除 /addVisit 的 jQuery $.get(/addVisit) 会阻止 googlebot 和其他机器人运行此功能?

【问题讨论】:

  • 下面的两个答案似乎都可以解决问题。我决定使用 jQuery $.post(/addVisit) + robots.txt 禁止 /addVisit。我确信使用 jQuery 或使用客户端都有优势。对我来说,使用 robots.txt 告诉机器人不要点击链接比解析机器人用户代理感觉更正确。

标签: jquery googlebot


【解决方案1】:

在你的网站根目录下创建robots.txt文件,并添加:

User-agent: Google
Disallow: /addVisit

您也可以使用* 代替Google,这样/addvisit 就不会被任何引擎索引。搜索引擎总是开始寻找/robots.txt。如果此文件存在,它们会解析内容并遵守应用的限制。

有关详细信息,请参阅http://www.robotstxt.org/robotstxt.html

【讨论】:

  • 对,但这只有在我正确使用 jQuery $.get(/addVisit) 时才有效?
  • 这只会破坏索引机器人。普通客户端和服务器之间的流量不会受到任何影响(请阅读我的回答中robots.txt 的解释)。
  • 正确。我的问题不在于 robots.txt,而是确保不会运行 jQuery $.post 语句。我采用的解决方案是在 jQuery 中使用 $.post 到 /visits/add,然后使用带有 User-agent 的 robots.txt:* Disallow: /visits/add
【解决方案2】:

如果您通过服务器端 HTTP 请求处理计数,则可以过滤任何包含“Googlebot”一词的用户代理。快速的 Google 搜索显示了几个 Googlebot 用户代理示例:

Googlebot/2.1 (+http://www.google.com/bot.html)
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)

【讨论】:

  • 此列表包含许多机器人使用的用户代理:smart-it-consulting.com/internet/google/googlebot-spoofer
  • 这正是我找到的页面 :) 值得检查一下用户代理是否与任何已知机器人匹配,如果是,请不要增加点击次数。
  • 不错的解决方案。尽管这似乎意味着在我们的服务器上处理的工作比使用 jQuery+robots 实际阻止机器人运行该功能要多。
  • 这是真的。如果您想减轻服务器的一些负载,您可以让 jQuery 使用 api.jquery.com/jQuery.browser 检查用户代理
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-17
  • 2013-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-27
  • 1970-01-01
相关资源
最近更新 更多