【问题标题】:How to show HTML snapshot to crawlers如何向爬虫显示 HTML 快照
【发布时间】:2015-02-04 21:04:17
【问题描述】:

我正在运行一个使用 AJAX 从数据库中填充产品的网站。现在我想让这个网站可以被搜索引擎抓取。我在谷歌网站管理员Making AJAX Applications Crawlable 上读过这篇文章。但我不知道如何在我的应用程序中进行这项工作。我只是不知道如何在不重写大部分代码的情况下将其应用于我的应用程序。希望你们当中有人能给我一些建议。

我的申请
网址:www.mysite.com/productcategory/category1/
此 URL 显示 category1 中的产品,并且 AJAX 调用创建了 HTML。没有特殊的 URL 参数。这样做是因为有分页。单击下一页会执行相同的 AJAX 脚本,但现在它会返回下一页的产品。该 URL 将被修改(带有 jQ​​uery 历史记录)为:
www.mysite.com/productcategory/category1/?page=2

单击next page 按钮,一个名为get_products.ajax.php 的脚本和所有参数(如page=2)都由POST 发送。所以对get_products.ajax.php 的调用总是一样的,URL 中没有参数。还有很多信息存储在会话中以限制数据库查询的数量。因此,get_product.ajax.php 正在查找的产品列表是会话中的 JSON 字符串。

可抓取
为了使网站可抓取,我需要创建由 AJAX 调用生成的 HTML 的快照。这一切都有意义,但我不知道如何向 Google 显示此内容而不是默认的 AJAX 内容。

我整个上午都在盯着这个问题,但我只是看不到我需要在代码中更改哪些内容...

【问题讨论】:

    标签: php ajax


    【解决方案1】:

    最简单的方法是在您使用 AJAX 调用的所有页面上的 <head></head> 标记之间添加 <meta name="fragment" content="!">。在您的情况下,这意味着您应该将此元标记添加到用于呈现 www.mysite.com/productcategory/category1/ 的模板中。

    这将导致爬虫使用?_escaped_fragment_= 参数询问您的页面。您的任务是使用此参数处理请求并将渲染的页面返回给爬虫。

    对于渲染,您可以使用 PhantomJS、https://prerender.io/ 或其他东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-07
      • 2017-05-04
      • 2022-08-18
      • 2010-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多