Vue SPA网址未启用历史记录模式

时间:2017-01-30 16:35:38

标签: laravel vue.js laravel-5.3 single-page-application

我正在使用Vue js创建一个SPA,它有点工作,但我有一个问题。在Vue上启用历史记录模式后,我可以输入网址并使用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?}获得返回视图数据。

我希望这是有道理的,如果有的话,任何帮助都会很棒,谢谢。

1 个答案:

答案 0 :(得分:3)

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

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