CodeIgniter redirect助手跳转异常:URL重复拼接问题求助
解决CodeIgniter控制器内跳转URL重复拼接问题
问题核心原因
URL重复拼接是因为base_url配置不完整或跳转时未使用框架提供的绝对路径生成方法,导致redirect()函数解析相对路径时出现错误拼接。
具体解决步骤
1. 修正base_url配置
打开application/config/config.php文件,找到$config['base_url']项,设置为项目根目录的绝对URL,注意末尾要加斜杠:
$config['base_url'] = 'http://localhost/ajaxTutorial/';
2. 使用site_url生成正确跳转地址
首先确保加载URL助手,然后用site_url()生成标准路径,避免相对路径错误:
- 在控制器构造函数中加载URL助手:
public function __construct() { parent::__construct(); $this->load->library('form_validation'); $this->load->model('welcome_model', 'model'); $this->load->helper('url'); // 新增加载URL助手 }
- 修改
dashboard方法中的跳转代码:
public function dashboard() { if (!isset($_SESSION['username'])) { redirect(site_url('welcome/index')); // 更简洁写法(index是默认方法):redirect(site_url('welcome')); } else { echo "welcome"; } }
3. 备选方案:直接使用绝对路径跳转
如果不想依赖site_url,也可以直接写完整的相对根路径:
redirect('/ajaxTutorial/welcome/index');
额外优化建议
- 登录逻辑判断存在错误:
if (!isset($modelData))应该改为if ($modelData)(假设模型login方法验证成功返回用户数据,失败返回空/false),否则登录成功时无法正确设置Session。 - 建议使用CodeIgniter内置Session类替代原生
$_SESSION,例如:$this->session->set_userdata('logged_in', TRUE);,使用前需加载Session库:$this->load->library('session');
内容的提问来源于stack exchange,提问作者athar h
相关产品推荐
相关产品推荐

