Laravel生产环境Vite资源取HTTP而非HTTPS,求Vite配置解决方案
解决生产环境Vite资源HTTP加载问题(APP_URL已设HTTPS)
以下是几种无需修改Laravel AppServiceProvider的解决方案:
1. 配置Vite的资源URL(推荐)
修改项目根目录下的vite.config.js,通过Laravel插件的url选项指定生产环境的HTTPS资源地址,让构建后的资源自动使用HTTPS:
import { defineConfig } from 'vite'; import laravel from 'laravel-vite-plugin'; export default defineConfig({ plugins: [ laravel({ input: ['resources/js/app.js'], // 仅在生产环境强制HTTPS资源地址 url: process.env.NODE_ENV === 'production' ? 'https://你的域名.com' : undefined, }), ], });
修改后重新执行vite build构建生产资源即可。
2. 手动指定@vite指令的资源前缀
直接在Blade模板中给@vite指令添加第二个参数,明确指定HTTPS的资源基础URL:
@vite('resources/js/app.js', 'https://你的域名.com')
这种方式适合临时调试或单个页面的特殊需求。
3. 通过环境变量控制资源URL
在项目的.env文件中添加生产环境的资源URL配置:
VITE_ASSET_URL=https://你的域名.com
然后在vite.config.js中读取该环境变量,配置build阶段的资源地址:
import { defineConfig } from 'vite'; import laravel from 'laravel-vite-plugin'; export default defineConfig({ plugins: [ laravel({ input: ['resources/js/app.js'], }), ], build: { assetUrl: process.env.VITE_ASSET_URL, }, });
重新构建后,资源会自动使用配置的HTTPS地址。
补充说明
你之前尝试的vite build -- --https无效,是因为该参数仅用于开发服务器启用HTTPS,对生产环境的构建产物资源URL没有影响。
内容的提问来源于stack exchange,提问作者Piotr Migdał
相关产品推荐
相关产品推荐

