laravel - Vue SPA 网址在启用历史模式的情况下不起作用

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

我正在使用 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 数据。

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

最佳答案

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

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

关于laravel - Vue SPA 网址在启用历史模式的情况下不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41940951/

相关文章:

vue.js - Nginx try_files 指向错误的文件夹

javascript - Vuetify动态创建v-select

mysql - 如何插入到数据透视表

php - 当我在 laravel 的 View 页面上调用 foreach 循环时,它不显示数据

php - 找不到 Laravel 5.4 存储文件

laravel - 路由存在 - 测试认为它不存在

php - 在 mySQL 中查询,以随机顺序从每个 'purpose' 11 中选择 44 个问题 PHP/Laravel

vue.js - 在 nuxt 生成后更改了 css

php - 来自 hasMany 关系的 Laravel 预加载模型

php - 如何在 Laravel 中的 SELECT 语句后插入记录时应用 'ON CONFLICT' 条件?