反应浏览器路由器处理F5-返回404

时间:2020-01-28 08:56:56

标签: reactjs

我已经从HashRouter切换到BrowserRouter,并且所有导航都工作正常-除了F5。

我知道为什么会失败...。向服务器www.example.com/account发送请求将导致404,因为服务器上没有此类路径。

从我已阅读的内容中,我需要添加一个包罗万象的内容。有点不确定那是解决办法。由于请求先到达服务器,然后再到达我的javascript SPA。

我的路由是这样的:

<Switch>
                <Route exact path="/" component={Dashboard} />
                <Route exact path="/accounts" component={Accounts} />
                <Route exact path="/accounts/:id" component={Accounts} />
                <Route exact path="/account" component={AccountEditor} />

但是我觉得我需要从低处修改一些内容。我不确定这是否是服务器设置,因为刷新www.example.com/accounts/会强制在服务器上执行GET并失败,甚至在查看我的代码之前。

我认为也许webpack是问题。但是,当我使用create-react-app创建应用程序时,找不到Webpack文件。我不确定create-react-app在哪里配置了所有

如何处理F5,或直接导航到不是/的网址? 主机运行IIS,所以我想知道是否存在web.config规则或可用于允许URL中的路径的东西-但始终从/?中获取

1 个答案:

答案 0 :(得分:0)

React构建包括静态文件,该文件包含.js文件的块和单个index.html文件。当您将其上传到传统的ngnix服务器时,它会像在路由中一样查找文件。要覆盖它并使其工作,您需要使用用于.js应用程序的静态文件服务器为您提供静态文件。我最常使用的是一个名为npm的{​​{1}}软件包。您可以使用以下方法在服务器上安装serve后将其安装在服务器上:

node.js

然后您可以使用以下命令来服务您的应用程序:

npm i -g serve

希望这对您有用。