我当前使用的是React 16.10.2,react-router-dom 5.1.2,我将路由器配置为各种路由,并且在未指定路径的情况下显示自定义的错误404页面。
当我在开发模式下使用应用程序时,它运行良好。当我通过npm run build
和serve -s build
在生产模式下使用它时,它会正确加载localhost:8443
处的基本URL,但是当我登录或尝试直接使用URL手动进入路线时,它会显示“找不到404页”消息。
我已经在线阅读了我应该将.htaccess文件放在我的/ public文件夹中,或者尝试向basename
中添加BrowserRouter
的方法,但是都没有起作用。我知道该应用程序中的某些路由是通过直接操纵window.location.href
来进行的。在仍然重定向到正确页面的同时如何保留此功能?
此应用是使用create-react-app
进行的。这是我的App.js:
...
if (authenticated) {
return (
<Router>
<Switch>
<Route path='/membership'>
<SafetyArea/>
<Sidebar/>
<Membership></Membership>
<SafetyArea/>
<Footer/>
</Route>
<Route path='/payment'>
<SafetyArea/>
<Sidebar/>
<Payment></Payment>
<Footer/>
</Route>
<Route path='/success'>
<SafetyArea/>
<Sidebar/>
<Success></Success>
<SafetyArea/>
<Footer/>
</Route>
...
<Route>
<SafetyArea/>
<Error404/>
</Route>
</Switch>
</Router>
);
这是我的.htaccess文件(到目前为止,我还没有看到它的作用):
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]