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

CodeIgniter4控制器访问异常:非根路径请求返回404错误求助

CodeIgniter4 控制器访问404异常排查建议

1. 优先排查.htaccess配置(子目录适配)

项目部署在admin_panel子目录下,.htaccess必须设置正确的RewriteBase,否则URL重写会失效。将项目根目录(admin_panel文件夹内)的.htaccess内容替换为:

RewriteEngine On
RewriteBase /admin_panel/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

确保.htaccess文件放在admin_panel目录下,而非上级目录。

2. 确认服务器Rewrite模块状态

  • Apache服务器:
    1. 执行命令开启Rewrite模块:a2enmod rewrite
    2. 检查站点虚拟主机配置,在对应目录段添加AllowOverride All(否则.htaccess规则不生效):
      <Directory /var/www/html/cyx.vix.co.in/admin_panel>
          AllowOverride All
          Require all granted
      </Directory>
      
    3. 重启Apache服务:systemctl restart apache2

3. 验证路由配置(routes.php)

打开app/Config/Routes.php,确保路由规则正确映射到控制器,示例:

$routes->get('/', 'Home::index');
$routes->get('home/login', 'Home::login');
$routes->get('admin', 'Admin::index');

注意:路由中不需要前置斜杠,框架会自动基于baseURL处理。

4. 检查App配置项

打开app/Config/App.php,确认两个关键配置:

  • baseURL必须准确:public $baseURL = 'http://cyx.vix.co.in/admin_panel/';
  • indexPage设为空字符串:public $indexPage = '';(移除URL中的强制index.php)

5. 控制器命名与文件规范

  • 控制器文件需放在app/Controllers目录下,文件名首字母大写(如Home.php)
  • 类名必须与文件名一致,且继承基础控制器:
    <?php namespace App\Controllers;
    
    class Home extends \CodeIgniter\Controller
    {
        public function index()
        {
            return view('welcome_message');
        }
    
        public function login()
        {
            // 登录逻辑
        }
    }
    

6. 快速定位问题的测试方法

尝试访问带index.php的控制器URL,如http://cyx.vix.co.in/admin_panel/index.php/home/login:

  • 若能正常访问:问题出在URL重写(.htaccess或服务器Rewrite未配置)
  • 若仍返回404:问题出在路由配置、控制器命名或文件位置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 00:34:56