这是单页应用程序或大量使用 JavaScript 和 AJAX 的应用程序中的常见问题。
首先,您需要在 JavaScript 中为此操作创建唯一的 URL,以便爬虫至少可以“命中这些操作”。如果你在 JavaScript 中执行一个函数,但你的 URL 没有改变,谷歌将永远无法知道那里发生了什么事。通常 AJAX URL 是这样写的:
http://www.foo.com!#jsAction
Google 爬虫将能够爬取该 URL,但返回的页面可能是空白的,因为 JavaScript 代码负责呈现所有内容。
这就是为什么爬虫在调用你的服务器时会改变 _escaped_fragment_ 的 '!#'。因此,爬虫请求的前一个 URL 将是:
http://www.foo.com?_escaped_fragment_=jsAction
使用 URL 中的这个新关键字,我们可以在服务器中确定请求来自爬虫,这就是魔术开始的时间。使用像PhantomJS这样的无头浏览器,我们可以在服务器中执行 JavaScript 代码并将完全呈现的 HTML 返回到爬虫请求。这是 Google 在其指南中建议的方法之一。
所以基本上关键是确定你得到哪种类型的请求,并根据查询字符串是否包含_escaped_fragment_来执行不同的代码。
来自 Google 的此链接可能会帮助您指出正确的方向:https ://developers.google.com/webmasters/ajax-crawling/
希望能帮助到你!