2013-04-09 115 views
0

我有一个非常简单的路由规则,我用它放在CodeIgniter中的路由配置文件中。处理CodeIgniter路由错误?

$route['building/(:num)'] = 'building/$1'; 

路由规则工作得很好,没有问题,我发现,传递变量的参数时,显示此错误消息

An Error Was Encountered 

The URI you submitted has disallowed characters. 

我都知道,我告诉笨只接受唯一的问题数字作为参数,但我需要做的,以防万一错误的参数,它必须重定向到另一个定义的页面或网址,而不是显示此错误。
我不知道,如果它能够做到这一点通过配置文件,或者我应该写一个控制器来做到这一点
感谢

回答

0

路线从来没有消毒或错误检查的URI,他们在那里只是为了匹配模式。生成错误是因为URI中存在application/config/config.php中的$config['permitted_uri_chars']设置中不存在的字符,然后_filter_uri()方法中的URI类将检查该字符。

不知道你想要使用的变量是什么样子(它显然具有URI不友好的字符),我会建议在尝试在URL中使用它们之前对这些变量进行验证和消毒。 尤其是如果它们是用户生成的。不要相信别人。永远。

你的一些选项包括:

  1. 消毒/检查变量的值,看它是否包含不应该在你的URI字符。默认配置设置几乎是URI字符的标准(尽管也允许一些其他配置),所以如果可能的话,我会试着坚持下去(特别是如果你不知道你在做什么)。

  2. 将您的permitted_uri_chars列表更改为包含其他字符(不是真的推荐,请参阅#1)。

  3. 扩展URI类并替换/修改_filter_uri()方法,用重定向或其他代码替换show_error()部分以满足您的需求。也不是真的推荐,因为图书馆不应该控制你的重定向。