javascript - 在没有后端控制的情况下使 AJAX 应用程序可抓取

标签 javascript ajax github ember.js seo

我构建了一个 tool它利用 EmberJS 和 GitHub Pages 创建一个在浏览器中呈现的博客应用程序。它使用 JavaScript 获取 Markdown 文件并将它们呈现到应用程序的主体中。因为所有内容都是通过 AJAX 请求获取的,所以我不确定使内容可被 Google 等抓取的最佳方法。

我已经 read many articles这建议使用 PhantomJS 来处理 _escaped_fragment_ 请求,但由于内容托管在 GitHub 上,因此无法在服务器端运行任何内容。

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

最佳答案

问题是,Can googlebot do basic javascript?

如果没有,那么,没有。正如我所见,您的应用程序需要 JS 支持才能呈现任何页面。这使您无法使用机器人友好的访问方法。

如果是,那么,是:

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

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

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

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

关于javascript - 在没有后端控制的情况下使 AJAX 应用程序可抓取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18155377/

相关文章:

javascript - 收听服务响应 JavaScript

javascript - 当浏览器关闭事件被调用时如何重定向到其他页面

javascript - 使用 UUID 时 Ajax 调用出错

javascript - 当我从 AJAX 调用 WCF web 服务时出现问题

PHP 编译器 require 命令以及存储库详细信息

javascript - 为什么我的 JQuery 运行缓慢?

javascript - 如何从 node.js 创建 Azure AppendBlob

javascript - 在循环中定义ajax回调覆盖

github - 推送到github的问题

git - git 和 github 的工作流程最佳实践?