You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel+Vue3生产构建后移除URL中的/build/前缀

解决Laravel+Vue构建后URL带/build/前缀的问题

以下是几种无需修改.htaccess的解决方案:

1. 调整Vue项目的publicPath配置

Vue CLI构建时,publicPath决定了资源文件和路由的基础URL前缀。修改vue.config.js(没有则新建):

module.exports = {
  publicPath: '/'
}

该配置会让Vue构建后的所有资源路径和路由都基于网站根目录,不再自动添加/build/前缀。同时确保Vue路由的base属性使用默认的process.env.BASE_URL,示例如下(在router/index.js中):

const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes: [...]
})

2. 修改Vue构建产物的输出目录

如果不想保留public/build目录,可以直接让Vue构建产物输出到Laravel的public根目录(或指定子目录),避免路径前缀。修改vue.config.js:

module.exports = {
  publicPath: '/',
  outputDir: '../public' // 指向Laravel项目的public目录
}

注意:此操作会覆盖Laravelpublic目录下的同名文件,建议先备份原有文件,或者指定更具体的子目录(比如../public/vue-assets),同时调整Blade文件中资源引入的路径。

3. 调整Laravel的静态资源路由(可选)

如果不想修改Vue配置,可以在Laravel中添加路由,将/build/*的请求映射到public/build/*,但不改变前端URL。在routes/web.php中添加:

Route::get('/{any}', function () {
    return view('app'); // 你的单页应用Blade视图
})->where('any', '^(?!build).*$'); // 排除/build路径的请求

Route::get('/build/{path}', function ($path) {
    return response()->file(public_path("build/{$path}"));
})->where('path', '.*');

这种方式下,前端路由仍使用根路径,Laravel负责处理静态资源的映射,用户看不到/build/前缀。

内容的提问来源于stack exchange,提问作者Robin Mons

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 11:01:59