无需后端控制即可抓取AJAX应用程序

hod*_*smr 6 javascript ajax seo github ember.js

我已经构建了一个利用EmberJS和GitHub Pages创建在浏览器中呈现的博客应用程序的工具.它使用JavaScript来获取Markdown文件并将它们呈现到应用程序的主体中.由于所有内容都是通过AJAX请求获取的,因此我不确定是否可以通过Google等方式对内容进行抓取.

很多 的文章暗示使用PhantomJS处理_escaped_fragment_请求,但是由于内容是在GitHub上托管,有没有办法运行任何服务器端.

是否有可能解决此问题(例如在将内容推送到GitHub之前提前呈现某些内容)或者我是否只是遇到了JavaScript应用程序的缺点?

Umb*_*lla 2

问题是,googlebot 可以做基本的 javascript 吗?

如果没有,那么,没有。据我了解,您的应用程序需要 JS 支持才能呈现任何页面。这使您没有适合机器人的访问方法。

如果是,那么,是:

由于 JavaScript 可以通过 访问 url 参数location.search,因此您可以为 Google 创建合理的 URL,以获取href由 JS 应用程序解释的属性,并在onclick属性中为用户覆盖。

<a href="/?a=My-Blog-Post" onclick="someFunc(this.href);return false;">
Run Code Online (Sandbox Code Playgroud)

这将与应用程序的 onload 中的代码配对,以查找location.search和获取可能出现在指定 url 参数中的 .md(在解析查询字符串之后),希望 Google 运行所述 onload 来获取指定的内容。这是许多网站样式路径的变体domain.com/#!ajax/path。两者都完全是客户端,但查询字符串变体将向 googlebot 表明该页面值得作为不同的 URL 进行获取。

您可以使用http://google.com/webmasters进行测试,它具有“fetch as googlebot”功能。