找不到反应路线

时间:2018-11-07 15:49:43

标签: reactjs react-router react-router-dom

我有一个嵌套结构,其中托管level1/level2/level3如下的react build。当我将servelocalhost: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时却无效?解决此问题的正确方法是什么?

2 个答案:

答案 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应用提供静态服务的服务器,我相信这可以解决您的问题;)