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

CodeIgniter 3.1.8博客应用密码重置功能出现404页面未找到错误的原因排查

解决CodeIgniter 3密码重置页面404错误的问题

看起来你遇到的404问题核心出在路由规则的配置错误上,我们一步步排查修复:

1. 修正路由规则的关键错误

你的路由规则:

$route['changepasword/(:any)/(:any)'] = 'changepasword/$1/$2/';

存在两个致命问题:

  • 末尾多余的斜杠:这个斜杠会让CodeIgniter强制要求URL末尾必须带斜杠才能匹配,但你访问的URL是不带尾斜杠的,直接导致匹配失败。
  • 方法指向错误:CodeIgniter默认调用控制器的index方法,当前路由会把$1(邮箱/md5值)识别为控制器的方法名,而非传递给index的参数,这完全不符合你的代码逻辑。

正确的路由规则应该修改为:

$route['changepasword/(:any)/(:any)'] = 'changepasword/index/$1/$2';

2. 优化路由匹配顺序(可选但推荐)

CodeIgniter的路由是从上到下匹配的,把带参数的路由放在不带参数的路由前面,避免潜在的优先级冲突:

// 先匹配带参数的密码重置路由
$route['changepasword/(:any)/(:any)'] = 'changepasword/index/$1/$2';
// 再匹配不带参数的路由
$route['changepasword'] = 'changepasword';

3. 验证控制器基础配置(确保无低级错误)

CodeIgniter 3对控制器命名有严格要求:

  • 控制器文件名必须小写:changepasword.php
  • 控制器类名必须首字母大写:
class Changepasword extends CI_Controller {
    // 你的方法代码
}

如果这里命名错误,也会直接导致404。

4. 额外检查:URL后缀配置

如果你的config.php里设置了$config['url_suffix'](比如.html),访问时需要加上对应后缀;如果是空值(默认),则忽略这一点。

修改完路由后,再访问你的测试URL,应该就能正常渲染newpassword视图了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 08:37:38