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

CodeIgniter路由及base_url异常:导航跳转路径错误求助

解决CodeIgniter导航栏相对路径导致的URL错误问题

这个问题的核心原因是导航栏的Home链接用了相对路径——当你在http://localhost/cathode/blog/post-one页面时,相对路径会基于当前URL的层级生成,所以点击Home就会跳到blog/home,而不是根目录下的Home入口。

下面是几种靠谱的解决方法:

1. 使用CodeIgniter的base_url()生成绝对路径(推荐)

这是框架最标准的做法,能自动适配你的base_url配置,彻底避免硬编码路径的麻烦。

首先确保application/config/config.php里的base_url已经正确设置:

$config['base_url'] = 'http://localhost/cathode/';

然后修改导航栏视图(frontend/navbar.php)里的Home链接:

<a href="<?php echo base_url('home'); ?>">Home</a>

这样不管你在哪个页面,链接都会指向http://localhost/cathode/home,完全符合预期。

2. 使用site_url()函数(另一种框架推荐方式)

site_url()和base_url()的区别是,它会自动包含index.php(如果你的配置里开启了的话),适合需要兼容带index.php路径的场景:

<a href="<?php echo site_url('home'); ?>">Home</a>

如果你的index.php已经通过.htaccess隐藏了,这个函数也会自动适配,不用额外修改。

3. 手动使用根路径开头的绝对路径(不推荐)

如果你不想用框架函数,也可以直接写绝对路径,但这种方式硬编码了目录,后期更换域名或目录时需要逐一修改,灵活性很差:

<a href="/cathode/home">Home</a>

额外检查点

如果你用.htaccess隐藏了index.php,确认它的配置正确,避免路径解析出现问题,标准的CodeIgniter隐藏index.php的.htaccess内容大概是这样:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:36:43