我已经从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 并失败,甚至在它查看我的代码之前。
我想也许网络包是问题所在。但是当我使用 create-react-app 创建我的应用程序时,我找不到 webpack 文件。我不确定创建-反应-应用程序在哪里配置了这一切。
如何处理 F5,或直接导航到不是/的 url? 主机运行 IIS,所以我想知道是否有 web.config 规则或我可以用来允许 URL 中的路径的东西 - 但总是 GET from/?
React
构建包括静态文件,其中包括.js
文件块和单个index.html
文件。当您将其上传到传统ngnix
服务器时,它会像在路由中一样查找文件。要覆盖它并使这项工作,您需要使用静态文件服务器为应用程序提供静态文件.js
。我最常使用的是一个名为serve
的npm
包。在服务器上安装node.js
后,您可以使用以下命令将其安装在服务器上:
npm i -g serve
然后,您可以使用以下命令来为应用程序提供服务:
serve folder_name
希望这对你有用。