我已经构建了一个tool,利用EmberJS和GitHub Pages创建一个在浏览器中呈现的博客应用程序。它使用JavaScript来获取Markdown文件并将它们呈现到应用程序的主体中。由于所有内容都是通过AJAX请求获取的,因此我不确定是否可以通过Google等方式对内容进行抓取。
我read many articles建议使用PhantomJS处理_escaped_fragment_
请求,但由于内容托管在GitHub上,因此无法运行任何内容服务器端。
是否有可能解决此问题(例如在将内容推送到GitHub之前提前呈现某些内容)或者我是否只是遇到了JavaScript应用程序的缺点?
答案 0 :(得分:2)
问题是,Can googlebot do basic javascript?
如果没有,那么,不。在我读到你的时候,你的应用程序需要JS支持才能呈现任何页面。这使您无需使用机器人友好的访问方法。
如果是,那么,是的:
由于JavaScript可以通过location.search
访问网址参数,因此您可以为Google创建合理的网址,以获取由您的JS应用解释的href
属性,并覆盖{{1}中的用户} attributes。
onclick
这将与您应用的onload中的代码配对以寻找<a href="/?a=My-Blog-Post" onclick="someFunc(this.href);return false;">
并获取.md可能出现在指定的url参数中(在您解析查询字符串之后),希望Google运行所说的onload以获取指定的内容。这是许多网站location.search
样式路径的变体。两者都是完全客户端,但查询字符串变体将指示googlebot该页面值得作为不同的URL获取。
您可以使用http://google.com/webmasters对其进行测试,{{3}}具有“获取googlebot”功能。
答案 1 :(得分:1)
我创建了一个帮助它的小模块。看看http://alexferreira.github.io/seojs/
答案 2 :(得分:1)
如果没有后端服务器做某些逻辑,那就会让它变得有点棘手......
但也许,受到http://meta.discourse.org/t/seo-compared-to-other-well-known-tools/3914和http://eviltrout.com/2013/06/19/adding-support-for-search-engines-to-your-javascript-applications.html
所讨论内容的启发您可以使用构建脚本在路径定义post/:post_slug
之后的树中生成索引文件的副本,例如/post/slug/index.html
。每个页面都有一个<noscript>
标记,其中包含非常基本的内容和当前帖子的链接。您甚至可以在页面中预先加载CurrentPost
JSON哈希来保存一些XHR。
这意味着使用不是非常友好的历史API,但可能不是一个大问题。
答案 3 :(得分:0)
你走近吃晚餐吃沙漠,然后盯着你的蔬菜。
您真正想做的是首先在没有AJAX的情况下提供页面。在无需JavaScript的情况下正确加载页面后,只需添加?ajax=1
所有请求即可。如果isset($_GET['ajax'])
那么您可以避免加载页眉,页脚,侧边栏等。然后只需使用匿名window.onclick
并从那里插入。
不使用任何第三方软件(包括框架)的Web 3.0技术示例视频全部使用您尝试创建的最严格的代码构建...
http://www.youtube.com/watch?v=hZw8t-GVCB4
随意查看我网站上的JavaScript。我很乐意在这个周末帮助你。
答案 4 :(得分:-2)
你有一个构建脚本,为什么不在那里使用PhantomJs来生成静态网页?
U可以正常提供静态页面,如果启用了JS,则重定向到AJAX页面。
唯一的一点是,Ember-router-hyperlink对于搜索引擎机器人来说是不可用的。但我认为,如果没有服务器代码,绝对没有办法解决这个问题!