抓住所有控制器/路线

时间:2011-09-23 18:17:48

标签: codeigniter

如果我想抓住传递给我的网络应用程序的每个不存在的网址,并在不提供404的情况下为其提供视图,我该怎么做?

基本上我需要根据这些点击记录统计数据,但我需要通过提供内容而不是404错误来实现。

据我所知application/config/routes.php,我可以使用

$route['default_controller'] = 'catchall';

但我需要这个用于我的实际网络应用程序。

我也可以使用

$route['404_override'] = 'catchall';

但我不想扔404.

我尝试使用

$route['(:any)'] = '$1';

但是我需要记录整个网址(例如任意长度的网段),而不仅仅是第一段。

3 个答案:

答案 0 :(得分:6)

使用$route['(:any)'] = 'catchall_controller'。然后在您的控制器中,您可以使用$this->uri->segment(n)访问URI段。

答案 1 :(得分:1)

您是否尝试为不同数量的细分添加多个捕获所有路径?

$route['(:any)'] = '$1';
$route['(:any)/(:any)'] = '$1/$2';
$route['(:any)/(:any)/(:any)'] = '$1/$2/$3';

我猜这会奏效,但可能有更优雅的方式来做。

答案 2 :(得分:0)

我不知道codeigniter和普通PHP之间的区别,但是,在普通的php中,你可以编辑htaccess或其他什么来定义自定义404页面。

在自定义404页面中,执行类似以下操作: $请求= $ _ SERVER [ 'REQUEST_URI'];

获取所请求的URL ....进行处理......并执行此操作以清除404:

标题(“HTTP / 1.1 200 OK”); 标题(“状态:200 OK”);

然后,包括您的HTML或您想要提供的任何内容。