You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Codeigniter 3.x本地CSS、JS及图片无法加载求助

解决CodeIgniter 3.x静态资源(CSS/JS/图片)无法加载的问题

嘿,我来帮你搞定这个头疼的问题!你遇到的静态资源加载失败,核心原因是你的.htaccess规则配置出了问题——它没有正确把静态资源请求导向实际文件,反而让CodeIgniter把这些路径当成了控制器/方法/参数来解析。

先拆解下你当前.htaccess的问题:

  • DirectoryIndex没指定默认入口文件,服务器不知道该用index.php作为CI的访问入口
  • 最后的RewriteRule规则写错了,它没有把非静态资源的请求转发到CI的入口文件,反而直接指向原路径,导致CI错误解析静态资源请求

修改后的.htaccess配置

把你的.htaccess替换成下面的内容:

DirectoryIndex index.php
RewriteEngine on

# 排除静态资源目录和文件,不让CI解析这些请求
RewriteCond $1 !^(index\.php|img|assets|css|js|robots\.txt|favicon\.ico|logo\.png)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 把所有非静态/非存在的请求转发到CI入口index.php
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

额外需要检查的几个点

  1. 确保base_url配置正确
    打开application/config/config.php,设置正确的项目根URL:

    $config['base_url'] = 'http://localhost/你的项目目录/';
    

    引用静态资源时,尽量用CI的base_url()辅助函数生成路径,避免相对路径出错:

    <link rel="stylesheet" href="<?php echo base_url('css/style.css'); ?>">
    <script src="<?php echo base_url('js/script.js'); ?>"></script>
    <img src="<?php echo base_url('img/logo.png'); ?>" alt="Logo">
    
  2. 检查目录权限
    确保cssjsimg这些静态资源目录的权限是服务器可读的(一般目录设为755,文件设为644),避免因为权限问题导致资源无法访问。

这样修改后,静态资源请求会被正确指向实际文件,不会再被CI当成路由请求处理啦!

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

火山引擎 最新活动