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

CodeIgniter中同控制器display()方法无法显示图片,index()方法正常

嘿,这个问题我太熟了!你遇到的情况十有八九是图片相对路径的坑,跟CodeIgniter的URL结构直接相关。

为什么index()正常,display()却不行?

咱们先捋清楚URL的差异:

  • 当访问index()方法时,URL是类似 http://你的域名/控制器名,这时候视图里如果用相对路径写图片(比如 <img src="images/portfolio.jpg">),浏览器会自动把它解析成 http://你的域名/images/portfolio.jpg,刚好命中正确的图片位置。
  • 但调用display()方法时,URL变成了 http://你的域名/控制器名/display,这时候浏览器会把相对路径的图片解析成 http://你的域名/控制器名/images/portfolio.jpg——这个路径下根本没有图片,自然就显示不出来了!
几个靠谱的解决办法

按推荐程度给你列出来:

1. 用CodeIgniter的URL辅助函数生成绝对路径(首推)

这是最稳妥且易维护的方式。首先,你可以在控制器里加载URL辅助函数:

// 在display()或者index()方法里加载,也可以在application/config/autoload.php里全局自动加载
$this->load->helper('url');

然后在视图home/portfolio2里,把图片路径改成用base_url()生成:

<img src="<?php echo base_url('images/portfolio.jpg'); ?>" alt="Portfolio Image">

这样不管你访问哪个方法,图片路径都会被解析成完整的绝对路径,绝对不会出错。

2. 在HTML头部设置base标签

在视图的<head>标签里添加一个<base>标签,指定页面的基础URL:

<base href="<?php echo base_url(); ?>">

之后视图里所有的相对路径资源(图片、CSS、JS)都会基于这个base URL来解析,不用一个个改路径,也能解决问题。

3. 手动写完整绝对路径(不推荐)

直接在视图里写死完整的图片URL:

<img src="http://你的域名/images/portfolio.jpg" alt="Portfolio Image">

这种方式虽然简单,但一旦域名更换或者部署到不同环境,你就得手动修改所有路径,维护成本很高,所以尽量不用。

额外要检查的点
  • 确认你的图片文件夹是放在项目根目录(和application、system文件夹同级)的images里,而不是application目录下,不然base_url()也找不到。
  • 检查项目根目录的.htaccess文件,确保重写规则没有拦截静态资源的访问(比如要排除images、css这类静态文件夹)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:25:09