SEO服务器上的Backbone.js应用程序 - phantom.js和node.js?

And*_*rew 6 apache seo node.js backbone.js phantomjs

我正在开发一个需要进行搜索引擎优化(SEO)的backbone.js/marionette网站.我们正在使用java/spring RESTful后端和Apache 2.2网络服务器.我目前正在我们的应用程序中实现pushstate,而它仍处于早期阶段.

到目前为止,我提出了一个解决方案:

  • 对于启用了javascript的浏览器的普通用户,请使用纯客户端主干实现.
  • 使用Apache的mod_rewrite将所有路径路由到index.html页面,路径完整,以便backbone.js返回正确的页面,并且url保留其形式.我有这么多正常工作(减去一个错误).
  • 使用Apache的httpd.conf文件嗅探机器人/爬虫,并创建重写规则以将机器人重新路由到我们的node.js服务器.
  • 使用phantomjs生成html/content并将其返回到webcrawler.

我们不需要该站点对于机器人完全正常运行,但它必须返回正确的内容.我们正在使用小胡子模板,但我们想要一个DRY站点,并且觉得随着站点的增长,任何类型的Java模板渲染都会变得非常混乱.我们希望这个网站可以使用多年,而不是试图加入大量的第三方图书馆(至少比我们已经多了很多).

有没有人对这个主题有任何经验或建议?根据我的研究,其他人有点谨慎,特别是这个相关的问题.我有点担心机器人是否在javascript中"点击"而不是执行获取请求.想法和建议?

首先十分感谢.

小智 3

非常糟糕的主意,抱歉我太直率了。

您想要执行的操作如下:

如果我通过直接的 HTTP 请求点击http://yoursite.com/path/to/resource那么你的服务器应该为我提供该资源页面的 html,然后如果你愿意,你可以在此时使用 javascript 来“ init”上升到单页应用程序方面。从那里开始,如果我通过 AJAX 和主干路线进行导航,那么从那里开始一切都很好。如果我复制一个 url,关闭浏览器,然后在重新打开时将其粘贴进去,我应该会看到相同的 html。

这种方法已被证明是最佳方法,不仅适用于 SEO,而且适用于概念性设计系统,并确保您为每个人“工作”,而不仅仅是支持快速 JS 的浏览器。

您要不惜一切代价避免的是试图欺骗爬虫并为它们提供与用户看到的不同的内容......这是黑名单的秘诀。

总之,构建您的网站,以便如果您通过 http 点击 url,您将获得完整的 html,如果您通过单页应用程序模式 ajax 点击相同的 url,您将获得保持所有同步所需的部分内容... .更好的架构,更少的SEO黑名单!

  • 谷歌似乎支持通过无头浏览器的 html 快照 https://developers.google.com/webmasters/ajax-crawling/docs/html-snapshot (5认同)