用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4490|回复: 9
收起左侧

[已解决] 【自定义404页面】

[复制链接]
发表于 2011-5-14 15:25:38 | 显示全部楼层 |阅读模式
本帖最后由 rockey329 于 2011-5-16 15:19 编辑

终于搞定了自定义404,拿出来分享一下,高手无视


=====================


//先修改 config/routes.php 其中error是控制器名称,error_404是方法名

PHP复制代码
$route['404_override'] = "error/error_404";
复制代码




//在error_404()方法里设置数据,跟普通方法一样

PHP复制代码
function error_404()
{
    $this->output->set_status_header('404');
    echo "404 - not found";
}
 
复制代码



注意:404错误页面<512bytes时,浏览器,如chrome和ie会提示友好的错误信息,例如:
Oops! This link appears to be broken.

发表于 2011-5-14 19:48:57 | 显示全部楼层
回复 rockey329 的帖子

在控制器里引用一下url helper
$this->load->helper("url");
使用site_url() 或者 base_url()的都需要load->helper("url");
发表于 2011-5-14 20:02:02 | 显示全部楼层
现在router配置文件可以定义控制器了.
 楼主| 发表于 2011-5-15 11:05:29 | 显示全部楼层
回复 kissgxd 的帖子

我是直接autoload 的help url,还有,我要改的是默认的404页面,不是调用 show_404
发表于 2011-5-16 10:59:37 | 显示全部楼层
回复 rockey329 的帖子

CI2.0开始可以在routes.php中,重新指定404页面
$route['404_override'] = '';
 楼主| 发表于 2011-5-16 13:18:13 | 显示全部楼层
回复 jeongee 的帖子

感谢回答,可以了,但是有个新问题,我在error_404这个方法里面,用了$this->output->set_status_header('404');后,chrome下是提示chrome的无法找到,而不是我自己写的,这是什么原因?
 楼主| 发表于 2011-5-16 15:20:09 | 显示全部楼层
终于搞清楚了,希望对新手有帮助
发表于 2012-8-24 14:51:03 | 显示全部楼层
jeongee 发表于 2011-5-16 10:59
回复 rockey329 的帖子

CI2.0开始可以在routes.php中,重新指定404页面

tk   @ jeongee

另外问一下,application/error/下面的文件属于什么性质
是类似于controller还是model或者是其他,我看api上没有明确说明
发表于 2012-8-24 14:53:37 | 显示全部楼层
xiaozhuaisnow 发表于 2012-8-24 14:51
tk   @ jeongee

另外问一下,application/error/下面的文件属于什么性质

那里都是CI内部调用的,也就是system/core/Exceptions.php里调用的
发表于 2012-8-24 16:23:28 | 显示全部楼层
jeongee 发表于 2012-8-24 14:53
那里都是CI内部调用的,也就是system/core/Exceptions.php里调用的

谢谢 !

本版积分规则