使Ember应用可抓取

时间:2013-10-30 04:13:14

标签: ember.js seo web-crawler

我正在阅读关于ajax抓取的谷歌规范; 我理解这个概念,但我需要更多澄清:

我的网址都是这样的:

http://www.website.com/#!/eng/home
http://www.website.com/#!/eng/contacts
...

我必须在这些地址提供html快照:

http://www.website.com/?_escaped_fragment_=/eng/home
http://www.website.com/?_escaped_fragment_=/eng/contacts
...

这是对的吗?或者我应该删除“escaped_fragment”网址中的“/”(例如http://www.website.com/?_escaped_fragment_=eng/home或其他内容?)

我用phantomjs生成HTML快照,但是哪一个是向抓取工具提供这些快照的最佳方式?使用节点js?使用htaccess重写规则?

2 个答案:

答案 0 :(得分:5)

好的,因为我终于摆脱了这个,我想分享我找到的方式;

首先,HTML快照必须提供给特定网址

的抓取工具
?_escaped_fragment_=

正在取代

#!

所以如果你有:

http://www.website.com/#!/eng/home

您的服务器必须提供以下快照:

http://www.website.com/?_escaped_fragment_=/eng/home

如果有人对我用于生成快照的方法感兴趣,我只需使用名为judo(https://npmjs.org/package/judo)的节点模块; 为了使用它,您需要在服务器上安装phantomjs(http://phantomjs.org/)和节点(http://nodejs.org/); (有关如何在服务器上安装phantomjs的更多信息:How can I setup & run PhantomJS on Ubuntu?

一旦安装了所有东西,你只需要使用柔道(例如柔道.js)编写一个js文件(按照我之前链接的文档页面,然后你将在5分钟内完成);在服务器上上传文件并使用node执行该文件以创建快照和站点地图;

在此之后,当他要求提供HTML快照时,你需要为google的抓取工具提供服务吗?_escaped_fragment_ = URL;我认为最简单的方法是.htaccess文件;特别是你需要3行代码,在我的例子中是:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^_escaped_fragment_=/(.*)$
RewriteRule ^$ /seo/snapshots/%1\.html [L]

(因为我的judo.js文件在/ seo / snapshots目录中创建了快照)

最后,您可以使用Google网站管理员工具面板中的“以谷歌搜索”选项查看所有内容是否正常工作;如果你做得很好,你会看到结果是HTML快照......

答案 1 :(得分:1)

通常我不建议付费服务回答SO帖子,但在这种情况下认为你应该考虑使用BromBone - http://www.emberjsseo.com