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

求助:CodeIgniter中base_url()无法正确重定向的问题

解决重定向时URL重复的问题

看起来你遇到的是base_url()被当作相对路径拼接导致的重复URL问题,我来帮你一步步排查和修复:

1. 先确认config/config.php中的base_url设置是否正确

这是最常见的根源!CodeIgniter的base_url必须设置为完整的绝对URL,包含协议、域名和项目路径,末尾记得加斜杠。

正确设置示例:

// 开发环境示例
$config['base_url'] = 'http://localhost/projekt/';

// 如果是HTTPS环境
$config['base_url'] = 'https://localhost/projekt/';

如果需要适配动态环境(比如开发/生产切换),可以用自动检测的写法:

$protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https' : 'http';
$config['base_url'] = $protocol . '://' . $_SERVER['HTTP_HOST'] . '/projekt/';

错误设置的坑:

如果你的base_url是相对路径(比如'localhost/projekt/'或者'/projekt/'),浏览器会把它当成当前URL的子路径,就会出现localhost/projekt/localhost/projekt/这种重复的情况。

2. 检查重定向代码的写法

不管你是用CodeIgniter内置的redirect()函数,还是原生PHP的header(),都要确保调用的是base_url()函数的返回值,而不是把base_url()当成字符串传入。

正确写法:

用CodeIgniter的redirect函数:

// 方式1:直接调用,默认跳转到base_url
redirect();

// 方式2:显式传入base_url()的结果
redirect(base_url());

用原生PHP header重定向:

header("Location: " . base_url());
exit; // 重定向后必须终止脚本执行

错误写法(别踩!):

// 错误:把'base_url()'当成字符串,会被拼接到当前URL后
redirect('base_url()');

// 错误:同样是字符串问题
header("Location: base_url()");

3. 检查视图中按钮的跳转逻辑

如果是前端按钮触发的跳转,也要确保生成的是绝对URL:

正确示例:

<!-- 按钮点击跳转(PHP渲染) -->
<button onclick="window.location.href='<?php echo base_url(); ?>'">返回首页</button>

<!-- 或者用a标签模拟按钮 -->
<a href="<?php echo base_url(); ?>" class="button-style">返回首页</a>

错误示例:

<!-- 错误:把base_url()当成字符串,浏览器会当作相对路径 -->
<button onclick="window.location.href='base_url()'">返回首页</button>

按照这三步检查下来,应该就能解决URL重复的问题了。如果还有疑问,可以把你的config.php设置和重定向代码贴出来,我再帮你细化排查!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:49:13