CodeIgniter页面重定向问题:数据插入成功但跳转失败
解决CodeIgniter数据插入后重定向失败的问题
嘿,作为CodeIgniter新手遇到这种“数据插进去了但页面跳不动”的情况真的挺闹心的,不过别慌,咱们从报错信息入手一步步排查:The requested URL /code/display was not found on this server 本质是服务器找不到你指定的这个路径,大概率是重定向的写法或者路由配置出了问题,下面是几个关键排查点:
1. 先检查重定向的写法是否符合CodeIgniter规范
CodeIgniter有专门的redirect()函数来处理页面跳转,新手最容易犯的错就是直接写服务器根路径,而不是用框架的路由格式:
- 首先要确保你加载了URL辅助函数,要么在控制器的构造函数里全局加载,要么在跳转的方法里临时加载:
// 在构造函数里全局加载 public function __construct() { parent::__construct(); $this->load->helper('url'); // 加上这行 } - 然后重定向的时候要写控制器/方法的格式,而不是直接写
/code/display。比如如果你的display方法在Home控制器里,正确的写法是:
如果你硬要使用// 跳转到Home控制器的display方法 redirect('home/display');/code/display这个路径,那得在路由里做映射,后面会说。
2. 确认路由配置是否正确
打开application/config/routes.php,看看有没有对应路由规则:
- 如果想让
/code/display这个URL指向Home控制器的display方法,需要在路由文件里添加:$route['code/display'] = 'home/display'; - 要是没配置自定义路由,那默认的访问路径就是
控制器名/方法名,也就是home/display,这时候直接用redirect('home/display')就可以了。
3. 检查URL重写的.htaccess配置(如果开启了去掉index.php)
如果你为了美化URL去掉了index.php,那得确保根目录的.htaccess文件配置正确,不然服务器会解析错路径:
标准的CodeIgniter .htaccess配置大概是这样的:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
另外还要确认你的Apache服务器已经开启了mod_rewrite模块哦。
4. 确认目标方法存在
最后别忘了检查Home控制器里有没有display方法,比如:
public function display() { // 这里写display页面的逻辑,比如加载对应的视图 $this->load->view('display_view'); }
先从第一点开始排查,这是新手最容易踩的坑——用了服务器绝对路径而不是框架的路由格式,应该就能解决问题啦!
内容的提问来源于stack exchange,提问作者Prem
相关产品推荐
相关产品推荐

