Vue SPA url 无法在启用历史模式的情况下工作

Vue SPA url not working with history mode enabled

我正在使用 Vue js 创建一个 SPA,它可以正常工作,但我有一个问题。在 Vue 上启用历史模式后,我可以输入 urls 并使用 Vue 路由器转到该页面,但是当我尝试登录时,我得到的是文字页面 html。我知道我可以做 auth\{vue?} 之类的事情,但如果我不必那样做,我会更愿意。我希望能够始终保持 url 不带前缀,除非它是 API 请求。例如:

我有根视图:

Route::get('/{vue?}', function () {
   return view('layouts.app');
})->where('vue', '[\/\w\.-]*');

然后我有 api 个请求:

Route::group(['prefix' => 'api'], function () {
    Route::post('/login', 'Auth\LoginController@login');

    Route::post('/register', 'Auth\RegisterController@register');

    Route::get('/logout', 'Auth\LoginController@logout');
});

但是当我点击 /api/login 时,我从 /{vue?} 获得了 return 视图数据。

我希望这是有道理的,如果有任何帮助,那就太好了,谢谢。

这里解释的很清楚:https://kjamesy.london/work/laravel-53-vuejs-20-make-vuerouters-history-mode-play-nicely-with-laravels-routes

简短的故事:在 VueRouter 中将 history 模式声明为 false,然后在 Laravel 端,每当 $request->ajax() 为 false 时,相同的路由将始终捕获请求。因此,我们可以安全地定义一个 catch-all 路由来将此类流量重定向到我们资源控制器的 index() 方法: