【问题标题】:SEO for Backbone.js app on apache server - phantom.js and node.js?Apache 服务器上 Backbone.js 应用程序的 SEO - phantom.js 和 node.js?
【发布时间】:2013-02-24 09:15:20
【问题描述】:

我正在开发一个需要进行搜索引擎优化 (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/内容并将其返回给网络爬虫。

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

有人对此主题有任何经验或建议吗?根据我的研究,其他人有些谨慎,特别是this related question。我有点担心机器人是否在 javascript 中“点击”与执行获取请求。想法和建议?

提前非常感谢。

【问题讨论】:

  • 这里的问题到底是什么?
  • 这听起来像是一个好的进攻计划吗?你以前有没有这样做过,如果有,你有遇到什么问题吗?您会建议一个适合我们限制的替代解决方案吗?领先的爬虫是否点击与获取请求,这会造成问题吗?抱歉,如果这是一个更普遍的问题。

标签: apache node.js backbone.js seo phantomjs


【解决方案1】:

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

你想要做的是:

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

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

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

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

【讨论】:

  • Google 似乎通过无头浏览器支持 html 快照developers.google.com/webmasters/ajax-crawling/docs/…
  • 哇...这甚至在 2012 年 8 月更新,所以这可能是他们现在的方向。我认为你会非常小心你提供给他们的html“匹配”,因为那种类型的欺骗曾经让你严重地划桨......不管我从应用程序架构级别支持我的建议,它都会有所帮助形成一个真正强大的应用程序的设计。
  • 对我来说似乎是“非常糟糕的主意”的唯一部分是机器人/爬虫嗅探。只要将 phantomJS 快照提供给所有请求,而不仅仅是机器人,这种实现就不会很好吗?
猜你喜欢
  • 2020-06-24
  • 1970-01-01
  • 2019-01-14
  • 2012-11-26
  • 2012-07-09
  • 1970-01-01
  • 1970-01-01
  • 2014-11-22
  • 2015-06-26
相关资源
最近更新 更多