如果我想抓住传递给我的网络应用程序的每个不存在的网址,并在不提供404的情况下为其提供视图,我该怎么做?
基本上我需要根据这些点击记录统计数据,但我需要通过提供内容而不是404错误来实现。
据我所知application/config/routes.php
,我可以使用
$route['default_controller'] = 'catchall';
但我需要这个用于我的实际网络应用程序。
我也可以使用
$route['404_override'] = 'catchall';
但我不想扔404.
我尝试使用
$route['(:any)'] = '$1';
但是我需要记录整个网址(例如任意长度的网段),而不仅仅是第一段。
答案 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或您想要提供的任何内容。