Я сталкиваюсь с проблемой пути с реагирующим маршрутизатором и laravel. Я хочу пойти по этому пути: / пользователи / создать. Он прекрасно работает с реагирующим маршрутизатором, но когда я нахожусь на этом пути и обновляю страницу, я получаю 404 и перенаправляется из-за промежуточного программного обеспечения. Почему это происходит?
** Примечание: когда я использую везде пользователи — создайте вместо пользователей / создайте — это работает, но это не то, что я хочу.
Код:
AppRouter.js
<Router history={history}>
<div className="wrapper">
<Sidebar/>
<div className="main-panel">
<Navbar/>
<Switch>
<Route exact path='/dashboard' component={Dashboard} />
<Route exact path='/categories' component={Category} />
<Route exact path='/users/create' component={UserCreate} />
<Route exact path='/users' component={User} />
<Route component={NotFound}/>
</Switch>
<Footer/>
</div>
</div>
</Router>
routes.php
Route::view('/dashboard', 'main')->middleware('auth', 'preventHistory');
Route::view('/categories', 'main')->middleware('auth', 'preventHistory');
Route::view('/users/create', 'main')->middleware('auth', 'preventHistory');
Route::view('/users', 'main')->middleware('auth', 'preventHistory');
Sidebar.js
<li className="nav-item ">
<NavLink exact to='/users' activeClassName='active'>
<span className="sidebar-normal">y</span>
</NavLink>
</li>
<li className="nav-item ">
<NavLink exact to='/users/create' activeClassName='active'>
<span className="sidebar-normal">x</span>
</NavLink>
</li>
Когда вы нажимаете «Обновить», путь URL-адреса напрямую переходит к Laravel, который вообще не знает об этом пути. Этот путь известен только Реагировать.
Чтобы решить эту проблему, все, что вам нужно сделать, это сказать Laravel, что /users/create
путь React, и поэтому при обнаружении такого пути Laravel должен переслать запрос в index.html.
Это общая проблема во всех рамках. Поскольку я не PHP человек, я не могу дать вам пример кода.
Тем не менее, вы можете сослаться на этот ответ, который относится к Spring, Java и Angular: https://stackoverflow.com/a/47926065/1235935
Я понял проблему к счастью. Когда я нажимаю «обновить» или когда я вхожу в систему, я делаю http-запрос через axios в этой конечной точке, например, axios («api / auth / check»). Проблема заключалась в том, что axios каждый раз перехватывал URL-адрес и обращался к относительному пути (api / ..), поэтому он попадал не в ту конечную точку. Я исправил это с помощью одного / в начале каждого запроса axios.