部署在虚拟主机上的Laravel项目样式、字体及JS加载失败求助
Laravel虚拟主机部署后资源加载失败排查方案
问题概述
本地开发环境正常,部署到虚拟主机后,项目的样式、JS文件(通过asset()引入)以及外部HTTPS字体链接均加载失败,控制台返回404错误。
核心信息
- 资源引入代码:
<link rel="stylesheet" href="{{ asset('styles/style.css') }}"> <script src="{{ asset('js/main-page.js') }}"></script> <link href="https://fonts.cdnfonts.com/css/agency-fb" rel="stylesheet">
config/filesystems.php相关配置:
'local' => [ 'driver' => 'local', 'root' => storage_path('app'), 'throw' => false, ], 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), 'url' => env('APP_URL').'/storage', 'visibility' => 'public', 'throw' => false, ],
- 部署流程:Installatron安装Laravel → 复制项目文件 → 引入laravel/livewire → 执行
composer update、composer dump-autoload - 已尝试操作:修改
AppServiceProvider.php强制HTTPS,替换asset()为其他方法,均未解决问题
排查解决思路
1. 确认public目录完整性与权限
- 核对虚拟主机上的
public/styles、public/js目录是否和本地完全一致,确保所有资源文件完整上传 - 给主机上的
public目录及子文件设置正确权限:目录设为755,文件设为644,避免权限不足导致访问被拒
2. 校验APP_URL配置
- 打开
.env文件,确认APP_URL为虚拟主机的完整HTTPS域名(例如https://your-domain.com),若部署在子目录需追加路径 - 执行
php artisan config:clear清除配置缓存,使新配置生效
3. 检查虚拟主机文档根目录
- 虚拟主机的文档根目录必须指向Laravel项目的
public文件夹,而非项目根目录。若指向错误,asset()生成的路径无法正确映射资源 - 登录主机控制面板或联系服务商确认文档根目录的设置
4. 排查外部字体加载异常原因
- 检查主机是否启用内容安全策略(CSP),若有需添加
fonts.cdnfonts.com到允许列表 - 查看浏览器控制台详细错误信息,确认是否存在域名拦截情况
- 临时将外部字体下载到本地
public/fonts目录,改为本地引入测试,排除外部域名访问限制
5. 重新生成Storage符号链接
- 若资源存放在
storage/app/public目录,执行php artisan storage:link生成public/storage到storage/app/public的软链接 - 若主机无法执行命令,可手动复制
storage/app/public下的文件到public/storage目录,或联系服务商协助创建软链接
6. 验证URL重写规则
- Apache环境:确保
public/.htaccess文件存在且配置正确,主机已启用mod_rewrite模块 - Nginx环境:确认配置文件包含Laravel重写规则,将所有请求转发到
index.php
内容的提问来源于stack exchange,提问作者Marcin
相关产品推荐
相关产品推荐

