You need to enable JavaScript to run this app. Laravel 6添加带参数路由后logo图片路径异常问题排查
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 6添加带参数路由后logo图片路径异常问题排查

问题根因

图片使用相对路径引用,当路由存在/category/{id}这类二级路径时,浏览器会将相对路径与当前页面的URL前缀拼接,最终生成带多余/category前缀的错误路径。删除路由参数后路由为一级路径,拼接后的路径刚好符合预期,因此资源可正常加载。

解决方案
  • 方案1(推荐,Laravel标准写法):使用Laravel内置的asset()辅助函数生成资源绝对路径,修改siteHeader.blade.php里的img标签代码:
<a class="navbar-brand" href="{{url('/')}}">
<img src="{{ asset('assets/images/logo.png') }}"  width="280"  height="75" alt=""/>

asset()会自动生成指向项目public目录的绝对路径,不受当前页面路由层级影响,同时也不需要手动加public前缀,适配站点根目录指向public的标准部署规范。

  • 方案2(快速修复):给图片路径开头加斜杠,改为根路径相对路径:
<img src="/public/assets/images/logo.png"  width="280"  height="75" alt=""/>

开头加/后浏览器会直接从站点根目录开始查找资源,不会和当前页面的路由路径拼接。

额外优化提示
  • 你路由定义中{id?}是可选参数,控制器方法的$id参数需要设置默认值,否则访问不带id的/category路由时会抛出参数缺失错误,修改控制器代码:
public function category(Request $request, $id = null)
{
        $course = DB::table('course')
        ->select('course.*')
        ->where('course.slug', '=' , $id)
        ->orderBy('course.id', 'DESC');
        $course = $course->paginate(20);
        return view('category')->with(compact('course'));
}
  • 生产环境建议将站点域名的根目录直接指向项目的public文件夹,既可以隐藏项目核心代码提升安全性,也可以去掉资源路径里的public前缀,简化路径写法。

内容的提问来源于stack exchange,提问作者Muttakii Khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 23:36:06