【问题标题】:Googlebot doesn't see jquery generated contentGooglebot 看不到 jquery 生成的内容
【发布时间】:2011-09-09 01:42:08
【问题描述】:

我使用 jQuery 通过 json 请求从数据库中检索内容。然后它将 HTML 中的通配符(如 %title%)替换为实际内容。这很好用,这样我就可以在数据库中维护我的多语言文本,但 Googlebot 只能看到通配符,而不是实际内容。我知道 Googlebot 会看到没有 javascript 的页面,但有没有办法解决这个问题?谢谢!

【问题讨论】:

    标签: jquery ajax googlebot


    【解决方案1】:

    在给出这个答案时,Google 似乎有一个几乎完全或功能齐全的 javascript-crawling 机器人:

    【讨论】:

    • 谢谢! that are correctly rendered in Google's Webmaster tools:你的意思是可以看到页面是如何为 GoogleBot 呈现的吗?究竟是用什么工具?其他备注:我网站的主要内容是在 1)页面上呈现谷歌地图 2)AJAX 调用导入内容之后加载的。您认为这会起作用吗,还是您认为 GoogleBot 不会等待 1) 和 2) 而是将我的网站视为空的?
    • 我使用了谷歌网站管理员工具,它会捕捉您网站的外观并将其呈现给您。您必须创建一个帐户并确认您拥有该网站。它应该等待地图加载。拥有帐户后,您就可以使用网站管理员工具了。
    【解决方案2】:

    您应该仔细阅读 Google 的 this document

    它讨论了如何启用 Googlebot 索引:

    • 内容根据 URL 中 #hashfragment 值的变化而变化的页面。
    • 内容在加载后立即更改但没有任何特殊 #hashfragment 本身的页面。

    简而言之,您正在考虑添加<meta name="fragment" content="!">(如“步骤 3”中所述),并通过一次性返回所有内容来响应服务器端上的特殊请求,否则您的客户端代码将在页面加载后生成。这些特殊请求实际上是 URL 中带有 ?_escaped_fragment_=... 的请求,向服务器表明它应该将所有最终呈现(我的话)预烘焙到 Googlebot 的单个响应中。

    也就是说,由于您将努力为这种特殊情况输出填充的内容,因此在一般情况下您最好这样做(避免需要处理 Google 的 _escaped_fragment_ 请求),如有必要,在页面加载后可能还有一种方法可以交换标记(例如,通过使用带有特定 classid 的跨度来识别它们)。

    【讨论】:

    • 我已经使用 PHP 来检索数据,所以对于翻译,我现在删除了中间的 jQuery 并让 PHP 进行通配符填充。干杯!
    【解决方案3】:

    Googlebot 显然不会呈现它下载的页面。这可能与其他搜索机器人采用的行为相同。

    您需要使用服务器端脚本或编译解决方案(有很多可供选择,包括 PHP、ASP.NET 等)。这样,您仍然可以保留动态和 i18n 功能,并且 Googlebot 会按照您的预期方式查看您的页面。或者至少对基本页面属性(如您知道 Googlebot 正在评估的标题)执行此操作,并为页面中不那么重要的部分保持 jQuery 更新。

    (老实说,在页面下载后使用 jQuery 替换标记可能不是最有效的方法,尤其是在服务器端脚本如此简单和免费的情况下)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      • 1970-01-01
      • 2013-04-24
      • 1970-01-01
      • 2019-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多