CI3开发POS系统路由重定向异常问题求助
问题分析与解决方案
问题根源
路由跳转异常是因为相对路径导致的URL叠加:
- 当当前页面处于
sitename/sistem路径下时,点击相对路径sistem/menu会自动拼接成sitename/sistem/sistem/menu - 同理,点击
dashboard会变成sitename/sistem/dashboard而非预期的sitename/dashboard
数据库中存储的URL格式本身没问题,但前端渲染时未使用绝对路径,导致跳转逻辑错误。
解决方案
1. 确保Base URL配置正确
打开application/config/config.php,确认base_url已正确设置(根据部署环境调整):
$config['base_url'] = 'http://localhost/你的项目名/'; // 线上环境示例:$config['base_url'] = 'https://你的域名/';
2. 修改侧边栏的URL渲染逻辑
在sidebar.php中,将子菜单的href从相对路径改为绝对路径,使用CodeIgniter内置的base_url()函数拼接:
// 原代码 <a class="menu-item" href="<?php echo $submenu['url']; ?>"> // 修改后 <a class="menu-item" href="<?php echo base_url($submenu['url']); ?>">
3. 验证控制器跳转逻辑(可选)
控制器中的redirect('sistem')无需修改,CodeIgniter的redirect()函数默认会基于base_url生成正确的绝对路径,但如果之前base_url未配置,需先完成步骤1。
原理说明
base_url()会生成你配置的站点根路径,拼接数据库中存储的sistem/menu后,会得到完整的绝对路径http://localhost/项目名/sistem/menu,无论当前页面处于哪个路径下,点击后都会直接跳转到正确地址,避免相对路径的叠加问题。
内容的提问来源于stack exchange,提问作者arcahyadi
相关产品推荐
相关产品推荐

