6

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

到目前为止,我提出的解决方案是:

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

我们不需要网站对机器人完全正常运行,但它必须返回正确的内容。我们正在使用 mustache 模板,但我们想要一个 DRY 站点,并且觉得随着站点的增长,任何类型的 java 模板渲染都会变得非常混乱。我们希望这个站点存在很多年,而不是试图连接到大量的 3rd 方库(至少不比我们现在的多)。

有人对此主题有任何经验或建议吗?根据我的研究,其他人有点警惕,特别是这个相关的问题。我有点担心机器人是否在 javascript 中“点击”与执行获取请求。想法和建议?

首先十分感谢。

4

1 回答 1

3

非常糟糕的主意,对不起,我太直率了。

您想要做的是以下内容:

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

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

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

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

于 2013-03-08T22:32:54.347 回答