我有一个嵌套结构,其中托管level1/level2/level3
如下的react build。当我将serve
与localhost:3000/level1/level2/level3
一起使用时,它会正确地重定向到localhost:3000/level1/level2/level3/title/cat/id
。但是当我尝试打
localhost:3000/level1/level2/level3/title1/cat1/id1
直接返回Not found
。
我的浏览器路由器代码如下
<BrowserRouter>
<Switch>
<Route path="/level1/level2/level3/:pageTitle/:category/:id" render={AppBody}/>
<Redirect from="/level1/level2/level3/" to="/level1/level2/level3/title/cat/id"/>
</Switch>
</BrowserRouter>
为什么默认重定向有效,但是当我们尝试直接访问URL时却无效?解决此问题的正确方法是什么?
答案 0 :(得分:0)
这对我来说很好,所以我认为您的代码的其他方面引起了问题。 这是带有简单index.js的代码沙箱,其中包括您的路由器代码: https://codesandbox.io/s/vmyzkj1lvy
您可以使用此URL查看提到的特定URL的结果: https://vmyzkj1lvy.codesandbox.io/level1/level2/level3/title1/cat1/id1
答案 1 :(得分:0)
问题实际上不是反应路由器,而是您的服务器。因此,请首先检查您的服务器在访问/level1/level2/level3/title1/cat1/id1
时实际上是否正在返回响应。
您的反应路由器实际上是在访问<Redirect from="/level1/level2/level3/" to="/level1/level2/level3/title/cat/id"/>
时更改浏览器中的URL,而没有向服务器发送请求。
您可以将此python gist用作为您的React应用提供静态服务的服务器,我相信这可以解决您的问题;)