将prerender.io与ReactJS一起用于SEO

将prerender.io与ReactJS一起用于SEO,seo,reactjs,prerender,react-router,Seo,Reactjs,Prerender,React Router,我意识到使用react路由器的ReactJS应用程序没有任何外部链接。搜索引擎没有意识到该网站有大量链接内容。Prerender.io似乎是一个很好的解决方案,但我无法让它在我的ReactJS应用程序中工作 prerender.io可以与ReactJS一起使用吗?如果不是的话,有没有另一个好方法来提高我的网站的搜索引擎优化,而不做所有的渲染服务器端 编辑:进一步挖掘后,我意识到这里的问题是react路由器默认使用“#”,而不是“#!”。有没有可能让react router与“#!”一起工作?预渲

我意识到使用react路由器的ReactJS应用程序没有任何外部链接。搜索引擎没有意识到该网站有大量链接内容。Prerender.io似乎是一个很好的解决方案,但我无法让它在我的ReactJS应用程序中工作

prerender.io可以与ReactJS一起使用吗?如果不是的话,有没有另一个好方法来提高我的网站的搜索引擎优化,而不做所有的渲染服务器端


编辑:进一步挖掘后,我意识到这里的问题是react路由器默认使用“#”,而不是“#!”。有没有可能让react router与“#!”一起工作?

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

设置react路由器时,确保其使用历史记录模式:

Router.run(routes, Router.HistoryLocation, function (Handler) {
在服务器中,您需要确保通过发送index.html或使用prerender来提供与静态文件不匹配的所有路由

您可以搜索“将所有请求发送到index.html{insert server name here}”,以查找有关此的详细信息


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

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

您应该能够为其他中间件找到类似的修改(这将需要一个不太灵活的语言的fork)。

我尝试过这个,但仍然不起作用。显然,Prerender必须使用hashbang,而不是hash,但我也无法让它以这种方式工作。@ritmate,我更新了我的答案。另外,请阅读他们的文档。。。他们明确建议不要使用
#网址。谢谢你的更新,我会调查的。在url中使用“#!”的建议来自support@prerender.io. 有可能有两种不同的策略吗?我不知道,但不可能在服务器端使用
#呈现url在其中,除了机器人的子集。
之后的任何内容都不会发送到服务器。很抱歉,我错过了这个。建议在
#上使用html5推送状态。在html5推送状态下,使用中的标记,爬虫将请求URL,URL末尾带有
?\u转义\u片段=
。如果您使用
#然后爬虫程序将替换
#带有
?\u转义\u片段\u=
。我们就是这样发现爬虫的。更多文档请参见此处:好奇的是,我不是react开发人员,但我可以看到使用HTML5模式react-routing@ritmatter我们在开发ReactJs应用程序时也遇到了这个问题,这个应用程序也需要SEO优化。请检查我们的reactjs锅炉板,使用它我们可以创建SEO freindly web应用程序。