本地XAMPP服务器中CodeIgniter静态资源加载404错误求助
我之前在本地用XAMPP开发CodeIgniter项目时也碰到过一模一样的问题——线上跑的好好的,本地所有CSS/JS全报404,折腾了好一阵才搞定,给你几个针对性的排查和解决方法:
1. 绝对路径导致的本地根目录不匹配
线上环境你的项目大概率是部署在服务器的根目录下,所以/assets/xxx这种绝对路径能直接指向项目的assets文件夹,但本地XAMPP里,你的项目肯定是放在htdocs的子文件夹里(比如htdocs/company-website)。这时候浏览器请求/assets/xxx会去localhost/assets找,而实际资源在localhost/company-website/assets,自然404。
解决方法:用CodeIgniter的base_url()生成路径
不要硬写绝对路径,改用框架自带的base_url()函数来拼接资源地址,它会自动适配本地和线上的根路径:
<link rel="stylesheet" type="text/css" href="<?php echo base_url('assets/public/plugins/foundation/css/foundation.min.css'); ?>"/> <script type="text/javascript" src="<?php echo base_url('assets/public/js/jquery.min.js'); ?>"></script>
别忘了先在application/config/config.php里设置正确的base_url:
// 本地环境 $config['base_url'] = 'http://localhost/你的项目文件夹名称/'; // 线上环境 $config['base_url'] = 'https://你的域名/';
2. .htaccess的RewriteBase配置错误
如果你的项目去掉了URL里的index.php(用了路由重写),本地的.htaccess文件可能没设置正确的RewriteBase,导致Apache无法正确解析静态资源的路径。
解决方法:在.htaccess开头添加RewriteBase
打开项目根目录的.htaccess,在RewriteEngine On下面加上你的项目子文件夹名称:
RewriteEngine On RewriteBase /你的项目文件夹名称/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
3. 本地文件权限问题
虽然XAMPP默认权限比较宽松,但偶尔也会出现Apache无法读取assets文件夹的情况,尤其是在Mac/Linux系统下。
解决方法:调整assets文件夹权限
- Windows:右键assets文件夹 → 属性 → 安全 → 给Everyone添加读取权限
- Mac/Linux:打开终端,进入项目根目录,执行命令:
chmod -R 755 assets/
4. 快速验证:直接访问资源URL
不确定是路径还是配置问题?直接在浏览器地址栏输入资源的完整本地URL,比如:
http://localhost/你的项目文件夹名称/assets/public/css/styles.css
如果能打开,说明是路径写法问题;如果还是404,那就是文件不存在或者权限/服务器配置问题。
内容的提问来源于stack exchange,提问作者Lyden

