我正在使用 Vue js 创建一个 SPA,它可以正常工作,但我遇到了一个问题。在 Vue 上启用历史模式后,我可以输入 url 并使用 Vue 路由器转到该页面,但是当我尝试登录时,我得到的是文字页面 html。我知道我可以做类似 auth\{vue?}
的事情,但如果我不必那样做我会更愿意。我希望能够始终保持没有前缀的 url,除非它是 API 请求。例如:
我有 Root View :
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?}
获得了返回 View 数据。
我希望这是有道理的,如果是的话,任何帮助都会很棒,谢谢。
最佳答案
简短的故事:在 VueRouter 中将 history 模式声明为 false,然后在 Laravel 端,每当 $request->ajax()
为 false 时,相同的路由将始终捕获请求。因此,我们可以安全地定义一个包罗万象的路由,将此类流量重定向到资源 Controller 的 index()
方法:
关于laravel - Vue SPA 网址在启用历史模式的情况下不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41940951/