我的项目网址中很少包含括号,它是一个codeigniter项目。不幸的是我不能删除它们。 所以我在config文件的route.php中编写了以下规则:
$route['abc-(def)'] = 'locations/index/12492';
$route['abc-%28def%29'] = 'locations/index/12492';
$route['404_override'] = 'home/pagenotfoundhandler';
因此,当我尝试访问网址http://mydomain.com/abc-(def)或http://mydomain.com/abc-%28def%29时,它会将我带到home / pagenotfoundhandler,而它应该带我到位置控制器和索引方法。请建议如何处理codeigniter中的括号。
答案 0 :(得分:0)
括号是正则表达式模式的一部分,因此如果要将它们用作ascii字符,请尝试转义它们:
$route['abc-\(def\)'] = 'locations/index/12492';
还有一个地方可以看:
在configignph系统中,config.php中应该有一个允许的uri字符设置。检查是否允许括号。
或者,您可以停用$config["csrf_protection"]
以跳过网址xss清理。
答案 1 :(得分:0)
嗯,我想这是因为无法找到应该重定向到http://mydomain.com/abc-(def)
的网页locations/index/12492
!因此发生了404 - Page not Found
错误,当然,正如您所定义的那样,您将home/pagenotfoundhandler
转移!确保路径存在,甚至为什么不提供完整的路径来查看它是否有效!