【问题标题】:Parenthesis issue in codeigniter urlcodeigniter url中的括号问题
【发布时间】:2013-07-01 00:25:40
【问题描述】:
我的项目网址中很少包含括号,它是一个 codeigniter 项目。不幸的是,我无法删除它们。
所以我在我的 config 文件夹的 route.php 中写了以下规则:
$route['abc-(def)'] = 'locations/index/12492';
$route['abc-%28def%29'] = 'locations/index/12492';
$route['404_override'] = 'home/pagenotfoundhandler';
因此,当我尝试访问 URL http://mydomain.com/abc-(def) 或 http://mydomain.com/abc-%28def%29 时,它会将我带到 home/pagenotfoundhandler,而它应该将我带到位置控制器和索引方法。请建议如何处理codeigniter中的括号。
【问题讨论】:
标签:
php
codeigniter
url
routes
【解决方案1】:
括号是正则表达式模式的一部分,因此如果您想将它们用作 ascii 字符,请尝试将它们转义,如下所示:
$route['abc-\(def\)'] = 'locations/index/12492';
还有一个值得一看的地方:
在 config.php 中应该为您的 codeigniter 系统设置允许的 uri 字符。检查那里是否允许括号。
或者,您可以禁用 $config["csrf_protection"] 以跳过 url xss 清理。
【解决方案2】:
我猜那是因为找不到应该重定向到locations/index/12492 的页面http://mydomain.com/abc-(def)!所以会发生404 - Page not Found 错误,当然正如您所定义的那样,它会将您带到home/pagenotfoundhandler!确保路径存在,或者你为什么不给出完整的路径来看看它是否有效!