不知怎么的我被我的路由规则卡住了。我不能为一个超过路由规则的页面设置路由。例如我在我的routes.php中有:
$route['(:any)/(:any)/(:any)'] = 'pages/view/$1/$2/$3';
$route['(:any)/(:any)'] = 'pages/view/$1/$2';
因此页面正确加载地址:
- mypage.com/value1/value2/value3/
- mypage.com/value1/value2/
然而,如果用户有意输入另一个值,它将抛出base_url()异常,这甚至不是我的404异常捕获所处理的,所以我得到:
An uncaught Exception was encountered
Type: Error
Message: Call to undefined function base_url()
当然,我可以创建另一个规则来捕获第4个值,但第5个值将引发错误;)
我想要实现的是找到一个规则,它将匹配到任何超过最后一个规则的树,类似于:
$route['(:any)/(:any)/(:any)/(no matter the value and tree)'] = 'pages/view/$1/$2/$3';
$route['(:any)/(:any)/(:any)'] = 'pages/view/$1/$2/$3';
$route['(:any)/(:any)'] = 'pages/view/$1/$2';
因此,即使用户键入以下内容,也不会出现任何错误:
- mypage.com/value1/value2/value3/4/5/6/7/8/9//10/11/12/13/14/15/blabla/etc...
我肯定有一个解决方案(一些正则表达式有?(:任何)或:任何将不工作,它将只捕获一个树多),但我没有找到任何,我知道解决方案可能很简单,但我还没有掌握CI路由...
提前感谢您的任何提示。
1条答案
按热度按时间bwleehnv1#
你可以这样使用一个普通的正则表达式:
更重要的问题是为什么不加载一个404?如果你的自定义404页面使用
base_url()
函数,自动加载url助手将修复这个错误。