7

我意识到我使用 react-router 的 ReactJS 应用程序没有任何外部链接。搜索引擎无法识别该站点有很多链接内容。Prerender.io 似乎是一个很好的解决方案,但我无法让它为我的 ReactJS 应用程序工作。

prerender.io 可以与 ReactJS 一起使用吗?如果没有,是否有另一种好方法可以在不进行所有渲染服务器端的情况下改善我的网站的 SEO?

编辑:经过进一步挖掘,我意识到这里的问题是 react-router 默认使用“#”,而不是“#!”。是否可以使用“#!”使 react-router 工作?

4

1 回答 1

2

Prerender 似乎需要真实的 url,因为否则您无法将缓存的 html 提供给普通人(哈希不会发送到服务器)。

设置 react-router 时确保它使用历史模式:

Router.run(routes, Router.HistoryLocation, function (Handler) {

在您的服务器中,您需要确保所有与静态文件不匹配的路由都通过发送 index.html 或使用 prerender 提供服务。

您可以搜索“将所有请求发送到 index.html {在此处插入服务器名称}”以查找有关此内容的详细信息。


似乎默认情况下 prerender 仅适用于某些情况。如果您在 node.js 中使用 express.js 中间件,这是一个示例:

require('prerender-node').shouldShowPrerenderedPage = function(){ return true }

您应该能够为其他中间件找出类似的修改(它需要使用不太灵活的语言进行分支)。

于 2015-01-29T02:09:02.500 回答