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

CodeIgniter重定向时控制器名称在URL中重复出现的问题排查

解决CodeIgniter 3登录后控制器名称重复的问题

嘿,我之前帮不少CodeIgniter新手排查过这类问题,你遇到的控制器名称重复的情况,大概率是重定向路径写法不对或者登录表单的提交地址配置有误,咱们一步步来捋清楚:

第一个常见原因:重定向时用了错误的路径格式

我猜你的admin_login方法里,重定向的代码大概是这样的?比如:

// 错误示例:如果当前请求已经在Admin控制器下,这种写法会叠加控制器名
redirect('admin/profile');
// 或者更坑的相对路径写法
redirect('profile'); // 此时当前地址是admin/admin_login,相对路径会变成admin/admin/profile

正确的做法是用CodeIgniter的site_url()辅助函数生成完整的URL,确保路径不会出错:

// 推荐写法:用site_url生成绝对路径,避免路径叠加
redirect(site_url('admin/profile'));

另外别忘了检查application/config/config.php里的base_url配置,必须以斜杠结尾,比如:

$config['base_url'] = 'http://你的域名.com/';

如果base_url没设置对,URL辅助函数生成的路径也会出问题。

第二个常见原因:登录表单的提交地址写错了

打开你的admin_login.php视图文件,看看form的action是不是用了相对路径?比如:

<!-- 错误写法:相对路径会让表单提交到admin/admin_login(叠加控制器) -->
<form action="admin_login" method="post">

正确的写法应该是用site_url()生成完整的提交地址:

<!-- 正确写法:生成绝对路径,确保提交到正确的控制器方法 -->
<form action="<?php echo site_url('admin/admin_login'); ?>" method="post">

第三个可能的原因:路由配置有冗余

去application/config/routes.php里看看有没有关于admin的冗余路由,比如:

// 这种冗余路由可能导致CodeIgniter重复解析控制器名
$route['admin/(:any)'] = 'admin/$1';

如果有这类和默认路由重复的规则,删掉它,保持路由配置简洁就好。

要是以上方法都没解决问题,可以把admin_login方法里完整的重定向代码,还有登录表单的action代码贴出来,我再帮你精准定位~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:55:19