子目录Laravel和Vue
我正在使用Laravel和VueJS,Laravel位于子目录(www.dominio.com/subdirectory)中,我更改了apache vHost的设置,以便访问该名称将被重定向到“subdirectory/public”文件夹,但是当我访问它时,VueJS遇到以下错误: 当我访问vue的任何子路由时,它都可以正常连接,但主路由会出现此问题 路由器/index.js子目录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
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添加了另一个子目录。