Laravel7.3 使用asset()加载public静态资源返回404无法解析
Laravel 7.3 asset()方法加载静态资源404问题排查指南
相关引用代码:
<link href="{{asset('_admin/vendor/fontawesome-free/css/all.min.css')}}" rel="stylesheet" /> <link href="{{asset('_admin/vendor/bootstrap/css/bootstrap.min.css')}}" rel="stylesheet" />
问题截图:
排查步骤
1. 校验静态资源物理路径合法性
- 首先确认项目
public目录下存在完整的对应路径:_admin/vendor/fontawesome-free/css/all.min.css、_admin/vendor/bootstrap/css/bootstrap.min.css - 注意:Linux/macOS环境下路径大小写敏感,必须和代码中的路径完全匹配
- 如果静态资源存放在
storage/app/public目录下,需要先执行命令创建软链才可访问:php artisan storage:link
2. 修正站点根路径配置
- 打开项目根目录
.env文件,检查APP_URL参数是否和实际访问的站点地址完全一致,例如本地测试用http://localhost/项目名/public访问的话,APP_URL需要填写完整路径,不可只填域名 - 如果站点部署在子目录下,需要修改
config/app.php中的asset_url参数,指定子目录路径:
'asset_url' => env('ASSET_URL', '/你的子目录路径/public'),
3. 校验服务器重写规则
Nginx环境
- 确认站点配置的
root参数指向项目的public目录,而非项目根目录 - 确认配置中包含Laravel官方重写规则:
location / { try_files $uri $uri/ /index.php?$query_string; }
Apache环境
- 确认
public目录下存在默认的.htaccess文件,且Apache已开启mod_rewrite模块 - 确认站点配置中
AllowOverride参数设置为All,允许.htaccess规则生效
4. 直接访问资源验证路径
右键浏览器控制台中404的资源项,复制地址直接在地址栏访问,观察返回的路径是否符合预期:
- 如果路径中出现重复的
public段,说明APP_URL或站点根目录配置错误 - 如果直接访问对应路径下的其他普通文件也404,说明服务器站点根目录配置错误
内容的提问来源于stack exchange,提问作者user3653474
相关产品推荐
相关产品推荐

