Sinatra 和客户端路由

Sinatra and a client-side routing

我有一个简单的应用程序(服务器端是 Sinatra,客户端是 ReactJS)。

工作流程非常基本:Sinatra 处理 get "/" 请求并使用静态样式表和脚本向客户端发送 index.html

脚本是 ReactJS 应用程序,由几个组件和一个 ReactRouter 组成。每个 React 的组件都是一个独特的 "page",在 ReactRouter 方面有自己的 route/path。

例如:

虽然我只实现了客户端,但它运行良好。但是现在,当我尝试将 Sinatra 用于服务器端时,这被打破了:当我想转到 /form 时,我得到了 Sinatra 的默认 404 页面 ("Sinatra doesn’t know this ditty.").

我了解 Sinatra(或 Rack)在 ReactRouter 之前拦截请求的路径(/form of /finish)。但是我不明白如何修复它(以及为什么会这样,而路由器脚本已经在客户端上并且应该首先触发)。

感谢您的帮助。

使用通配符路由到 return index.html 到所有路由。

像这样:

get '/*' do
  #return index.html
end