6

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

读过 很多 建议使用 PhantomJS 处理请求的文章_escaped_fragment_,但由于内容托管在 GitHub 上,因此无法在服务器端运行任何东西。

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

4

5 回答 5

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;">

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

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

于 2013-08-15T05:57:17.530 回答
1

我创建了一个小模块来帮助它。看看http://alexferreira.github.io/seojs/

于 2013-08-10T10:54:58.117 回答
1

如果没有后端服务器做一些逻辑,它会变得有点棘手......

但也许,受到这里讨论的启发http://meta.discourse.org/t/seo-compared-to-other-well-known-tools/3914http://eviltrout.com/2013/06/ 19/添加支持搜索引擎到您的javascript-applications.html

您可以使用构建脚本在路由定义之后的树中生成索引文件的副本,post/:post_slug例如/post/slug/index.html. 每个页面都有一个<noscript>标签,其中包含非常基本的内容和当前帖子的链接。您甚至可以CurrentPost在页面中预加载 JSON 哈希以节省一些 XHR。

这意味着使用对 IE 不太友好的 History API,但可能不是什么大问题。

于 2013-08-13T09:35:33.100 回答
0

你走近你的晚餐吃你的沙漠,然后盯着你的蔬菜。

您真正想要做的是首先在没有 AJAX 的情况下提供页面。无需 JavaScript 即可正确加载页面后,只需添加?ajax=1所有请求即可。如果isset($_GET['ajax'])那时您可以避免加载页眉、页脚、侧边栏等。然后只需使用匿名window.onclick并从那里插入即可。

不使用任何第三方软件(包括框架)的 Web 3.0 技术示例视频,全部使用您尝试创建的最严格的代码构建...

http://www.youtube.com/watch?v=hZw8t-GVCB4

随意查看我网站上的 JavaScript。我很乐意在这个周末为您提供帮助。

于 2013-08-09T22:08:56.210 回答
-2

你有一个构建脚本,那么为什么不在那里使用 PhantomJs 来生成静态网页呢?

U 可以正常提供静态页面,如果启用 JS 则重定向到 AJAX 页面。

唯一的一点是,Ember-router-hyperlink 不适用于搜索引擎机器人。但我认为,如果没有服务器代码,绝对没有办法处理这个问题!

于 2013-08-12T15:25:30.833 回答