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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:48:19