2017-08-30 38 views
0

路由的用户在一个页面应用程序使用我快递服务的静态目录的路径/,其中包含一个单页的前端有一个后端。这个后端也提供API REST。使用地址栏中

的前端是内置的反应,并使用反应路由器路由从该web应用程序的不同视图的用户。

如果我的反应路由器有两个条目,让说/app/config

我怎样才能将客户端重定向到应用程序的这一观点,如果用户在浏览器的地址栏直接进入的网址是什么?

现在,如果我这样做,快速获取请求,显然会返回一个404的消息,作为单页被送达/路径。

回答

2

一个简单的方法来解决是要始终(甚至404)在您的明确路线处理程序发送到用户的index.html

参见:https://stackoverflow.com/a/25499007/2624575

但是,你需要采取一些后事:

1)你的阵营路由器代码应该开始处理404:https://stackoverflow.com/a/37491381/2624575

2)您需要正确处理(图标,css,js等)的路径,否则你会发送相同的index.html到那些资源类型(这会使你的页面渲染不正确)

3)Make s react-router正在使用browserHistory(不使用哈希的历史#),这样React将能够正确呈现您的路线

希望它有帮助!

+0

所以,我只想澄清:我一定要摆脱快速静态服务,并在前台检查请求的路径? – lilezek

+0

@lilezek你仍然需要表达静态服务(因为你的所有资产都需要通过快递服务)。您只需添加一条规则即可在404上始终提供“index.html”。你现在的问题是,express是将“/ app”和“/ config”视为404s,但你需要'index.html'。你明白吗? –

+0

是的,我明白了一部分,但不要反应路由器将路由用户从给'index.html'后地址栏应用程序视图?我还需要在前端做些什么吗? – lilezek