ember.js – 使Ember应用程序可抓取

前端之家收集整理的这篇文章主要介绍了ember.js – 使Ember应用程序可抓取前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在阅读关于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”URL中的“/”(例如http://www.website.com/?_escaped_fragment_=eng/home或其他什么?)

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

解决方法

好吧,既然我终于摆脱了这个,我想分享我发现的方式;

首先,HTML快照必须提供给特定URL的爬虫

?_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快照……

猜你在找的JavaScript相关文章