我意识到使用react-router的ReactJS应用程序没有任何外部链接。搜索引擎无法识别该网站有很多链接内容。 Prerender.io似乎是一个很好的解决方案,但我不能让它适用于我的ReactJS应用程序。
prerender.io可以和ReactJS一起使用吗?如果没有,是否有另一种改善我网站搜索引擎优化的好方法,而不需要完成所有渲染服务器端的工作?
编辑:进一步挖掘后,我意识到这里的问题是react-router使用"#"默认情况下,而不是"#!"。是否有可能使反应路由器与#!#!"?一起工作答案 0 :(得分:2)
Prerender似乎期望真正的网址,因为否则您无法将缓存的html提供给普通人(哈希不会发送到服务器)。
设置react-router时,请确保使用历史记录模式:
Router.run(routes, Router.HistoryLocation, function (Handler) {
在您的服务器中,您需要确保通过发送index.html或使用预渲染来提供与静态文件不匹配的所有路由。
您可以搜索“将所有请求发送到index.html {insert server name here}”以查找详细信息。
默认情况下,预渲染似乎仅适用于某些情况。如果你在node.js中使用express.js中间件,这是一个例子:
require('prerender-node').shouldShowPrerenderedPage = function(){ return true }
你应该能够为其他中间件找出类似的修改(它需要一个灵活性较低的语言的分支)。