子目录Laravel和Vue

子目录Laravel和Vue,laravel,vue.js,laravel-5,Laravel,Vue.js,Laravel 5,我正在使用Laravel和VueJS,Laravel位于子目录(www.dominio.com/subdirectory)中,我更改了apache vHost的设置,以便访问该名称将被重定向到“subdirectory/public”文件夹,但是当我访问它时,VueJS遇到以下错误: 当我访问vue的任何子路由时,它都可以正常连接,但主路由会出现此问题 路由器/index.js import Router from 'vue-router'; import Login from '@/comp

我正在使用Laravel和VueJS,Laravel位于子目录(www.dominio.com/subdirectory)中,我更改了apache vHost的设置,以便访问该名称将被重定向到“subdirectory/public”文件夹,但是当我访问它时,VueJS遇到以下错误:

当我访问vue的任何子路由时,它都可以正常连接,但主路由会出现此问题

路由器/index.js

import Router from 'vue-router';
import Login from '@/components/Login';
import ForgotPassword from '@/components/ForgotPassword';
import Index from '@/components/Index';

Vue.use(Router);

export default new Router({
  mode: 'history',
  base: '/subdirectory',
  routes: [
    {
      path: '/',
      name: 'Index',
      component: Index,
      children: [
        {
          path: '',
          name: 'Login',
          component: Login,
        },
        {
          path: 'forgot-password',
          name: 'forgotPassword',
          component: ForgotPassword,
        },
      ],
    },

  ],
});
routes/web.php

<?php
//use Illuminate\Routing\Route;

use App\User;
use Illuminate\Support\Facades\Hash;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Route;

Route::get('/{any}', 'FrontendController@app')->where('any', '^(?!api).*$');```


除了在
vue路由器
文件中使用base:'your-sub-directory'和mode:history之外,您还需要配置
laravel
mix,以便使用
publicPath

在webpack.mix.js文件中添加
publicPath
并重新编译代码:

mix.webpackConfig({
  resolve: {
    extensions: ['.js', '.vue', '.json'],
    alias: {
      'vue$': 'vue/dist/vue.esm.js',
      '@': path.resolve(__dirname, 'resources/js/')
    },
  },
  output:{
    publicPath: "/your-sub-directory/"
  }
})

问题出在你的拉维那部分。您应该将
/
重定向到
/子目录
,并将路由更改为
route::get('/subdirectory/{any}','FrontendController@app')->其中('any','^(?api.*$)
关键是laravel在一个子文件夹中,apache v-host将所有指向
/子目录
的内容重定向到
/子目录/公共
,如果我将laravel路由设置为
/子目录/{any}
我将不得不访问我的url:
/子目录/子目录/{any}
是的,你必须这样做,但由于您使用vue创建SPA,这并不重要,因为您向用户显示的是正确的url,而只是向api url添加了另一个子目录。