CodeIgniter将index.php移至public文件夹后出现404错误求助
解决CodeIgniter移index.php到public后404的问题
嘿,这是新手调整CodeIgniter目录结构时很容易踩的坑,咱们一步步拆解问题、搞定它:
1. 先揪出核心错误点
(1).htaccess的语法失误
你写的.htaccess里有两个关键错误:
%(REQUEST_FILENAME)应该改成%{REQUEST_FILENAME}(是大括号{},不是小括号())- RewriteRule里的路径可以简化,去掉多余的
./
修正后的.htaccess内容:
RewriteEngine on RewriteCond $1 !^(index\.php|assets|images|js|css|uploads|favicon.png) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
(2)PHP内置服务器不支持.htaccess
你用的php -S 0.0.0.0:3000是PHP自带的轻量服务器,它完全不解析.htaccess文件,所以你的路由规则根本没生效——这是404的主要原因。
(3)服务器启动根目录错了
现在index.php移到了public文件夹,启动服务器时必须把根目录指定为public,而不是项目根目录。
2. 完整修复步骤
步骤一:调整服务器启动命令
放弃依赖.htaccess,改用指定路由脚本的方式启动:
php -S 0.0.0.0:3000 public/index.php
或者先进入public目录再启动:
cd public php -S 0.0.0.0:3000
步骤二:修改CodeIgniter配置
打开application/config/config.php,做两个关键调整:
- 确保
base_url和服务器地址一致:$config['base_url'] = 'http://localhost:3000/'; - 清空
index_page,去掉默认的index.php后缀:$config['index_page'] = '';
步骤三:确认路径配置正确
检查public/index.php里的路径设置是否匹配你的目录结构:
$system_path = '../system'; $application_folder = '../application';
你的目录结构应该是这样的才对:
项目根目录/ ├─ application/ ├─ system/ └─ public/ ├─ index.php └─ .htaccess
3. 测试验证
重启服务器后,直接访问http://localhost:3000,应该就能正常加载CodeIgniter的默认页面了。如果还是有问题,检查:
- 有没有文件夹名称、配置项的拼写错误
- 3000端口是否被其他程序占用
- 服务器终端的错误输出,有没有路径找不到的提示
内容的提问来源于stack exchange,提问作者SureshCS
相关产品推荐
相关产品推荐

