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

CodeIgniter应用除默认控制器外均报404错误的解决方法咨询

问题排查与解决方案

我来帮你一步步解决这个CodeIgniter的404问题,从你给出的配置来看,核心问题和几个细节点都需要调整:

1. 修复致命的.htaccess配置

你当前的.htaccess是用来拒绝所有请求访问的,这直接导致除默认控制器外的其他路由无法被正常解析。替换成CodeIgniter标准的URL重写配置:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /CodeIgniter/core/
    
    # 仅当请求的不是真实文件/目录时,转发到index.php处理
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

# 如需禁止直接访问目录,可保留这部分但放在重写规则之后
<IfModule authz_core_module>
    Require all denied
</IfModule>
<IfModule !authz_core_module>
    Deny from all
</IfModule>

注意:RewriteBase必须和你的base_url路径完全一致(即/CodeIgniter/core/),确保和服务器上的物理目录对应。

2. 确认控制器文件命名规范

CodeIgniter对控制器的文件名有严格要求:

  • 你已经正确设置了类名首字母大写:class Utilizador extends CI_Controller
  • 对应的文件名必须也是首字母大写:Utilizador.php(不能是小写的utilizador.php)
    如果文件名不符合规范,CI会找不到控制器,直接返回404。

3. 验证访问路径与base_url配置

你的base_url配置是:

$config['base_url'] = 'http://'.$_SERVER['HTTP_HOST'].'/CodeIgniter/core/';

先手动在浏览器访问http://你的域名/CodeIgniter/core/index.php/utilizador,如果能正常输出pppp,说明控制器本身没问题,只是路由重写的问题。

如果暂时不想修改.htaccess,也可以在表单中直接带index.php访问:

<form action="<?= base_url('index.php/utilizador') ?>" method="post">

4. 检查Apache服务器的必要配置

确保你的Apache满足以下条件:

  • 启用了mod_rewrite模块:打开httpd.conf,确认LoadModule rewrite_module modules/mod_rewrite.so没有被注释
  • 网站目录配置中允许.htaccess生效:在httpd.conf或虚拟主机配置里添加:
<Directory "/服务器上的CodeIgniter/core路径">
    AllowOverride All
    Require all granted
</Directory>

5. 路由配置的优化(可选)

你添加的$route['utilizador'] = 'utilizador';其实是多余的——CI默认会自动把URL中的utilizador映射到同名(首字母大写)的控制器。如果没有特殊路由需求,可以删掉这条规则,保持路由文件简洁。

按照以上步骤逐一调整,应该就能解决所有路由404的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:59:05