Reactjs 使用react路由器从单个页面react应用程序提供静态html页面

Reactjs 使用react路由器从单个页面react应用程序提供静态html页面,reactjs,react-router,Reactjs,React Router,我有一个react单页应用程序,正在考虑在用户未登录的情况下提供静态html、SEO友好的登录页。我希望这一页可以被所有搜索引擎浏览(网站的其余部分是密码保护的,搜索引擎优化不重要)。 我正在使用react路由器,如果应用程序发现用户未登录,我无法在应用程序中找到将用户重定向到静态html文件(因此将在服务器端提供)的方法。 有什么建议吗?谢谢!这是你可以在服务器上的路由器上做的事情。你不能在React应用程序中做这件事,因为这违背了让JS提供更少内容的目的(因为你会使用JS来提供“静态”内容)

我有一个react单页应用程序,正在考虑在用户未登录的情况下提供静态html、SEO友好的登录页。我希望这一页可以被所有搜索引擎浏览(网站的其余部分是密码保护的,搜索引擎优化不重要)。 我正在使用react路由器,如果应用程序发现用户未登录,我无法在应用程序中找到将用户重定向到静态html文件(因此将在服务器端提供)的方法。
有什么建议吗?谢谢!

这是你可以在服务器上的路由器上做的事情。你不能在React应用程序中做这件事,因为这违背了让JS提供更少内容的目的(因为你会使用JS来提供“静态”内容)

如果你还没有用路由器设置服务器,那将需要一些时间。但是一旦你设置好了,只需简单地检查一下路由就足够了

// in hapijs, for example:

handler(request, reply) {
   if (isAuthenticated(request)) {
     reply.view('dashboard')
   } else {
     reply.view('static_page')
   }
}

你能分享一些你正在使用的代码或示例吗?我希望这样做:
函数requireAuthHome(nextState,replace){if(LoginStore.isLoggedIn()){replace({pathname:'feed',state:{nextPathname:nextState.location.pathname}}}else browserHistory.push('/index.html');}
其中index.html是应用程序外部的一个简单html文件。这有意义吗?谢谢你的回复。不,我没有带路由器的服务器设置,因为应用程序主要是纯前端的-我只是用nginx提供js。关于最简单的设置方法有什么建议吗?我对SPAs比较陌生,只有这个基本用例我需要填充。谢谢!作为旁注-应用程序大部分是构建的,不是同构的-我知道我应该这样做,但在这一点上已经工作了6个月,如果可能的话,我不想让整个事情在服务器端呈现(除非我错了,这是你的建议?)。谢谢!如果你想要服务器呈现HTML,你需要一个某种类型的服务器。如果你想根据授权做出决定,提供JS或静态内容,你需要一个服务器。也许你可以使用Amazon的lambda服务(无服务器架构)。如果没有这一点,我建议始终提供一个静态标记且独立于React应用程序的主页,并从其他URL提供React应用程序。但正如我上面所述,在浏览器的JS中无法决定是否使用浏览器的JS。这有意义吗?