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

Laravel生产环境下Vite构建文件如何输出绝对路径而非完整域名

解决Laravel生产环境Vite输出不带域名的绝对路径问题

核心原因

Laravel的Vite集成默认会结合APP_URL生成完整带域名的资源URL,单纯修改vite.config.js的base选项会被Laravel的asset配置覆盖,因此需要同时调整Laravel的资源URL配置和Vite的base设置。

解决方案

1. 调整.env配置

在项目根目录的.env文件中添加或修改ASSET_URL,将其设置为根路径:

ASSET_URL=/

该配置会让Laravel生成资源URL时以根路径为基础,不再拼接APP_URL。

2. 修正vite.config.js的base配置

确保Vite的base选项指向build产物的存放目录(默认是public/build):

import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';

export default defineConfig({
    plugins: [
        laravel({
            input: ['resources/css/app.css', 'resources/js/app.js'],
            refresh: true,
        }),
    ],
    base: '/build/',
});

3. 清除Laravel缓存

配置修改后,需清除配置缓存和应用缓存以确保新配置生效:

php artisan config:clear
php artisan cache:clear

备选方案:自定义Vite资源URL生成逻辑

如果上述方法不生效,可在App\Providers\AppServiceProvider的boot方法中自定义Vite的URL生成规则:

<?php

namespace App\Providers;

use Illuminate\Support\Facades\Vite;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        // 自定义Vite资源URL,仅输出/build/开头的绝对路径
        Vite::assetUrl(function ($path) {
            return "/build/{$path}";
        });
    }
}

完成以上步骤后,重新执行npm run build,Blade中通过@vite(['resources/css/app.css', 'resources/js/app.js'])引入的资源,就会输出类似/build/css/app.74637622352.css的绝对路径,不再包含域名。

内容的提问来源于stack exchange,提问作者Aiden Pearce

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 02:18:08