我有名为
的控制器AbcController
,这是默认模块。所以它通常被称为
somedomain.com/abc
..并且所有内容都已正确发送,但是如果是uf URL
somedomain.com/!abc
OR
somedomain.com/@abc
我仍然被送到
AbcController
,问题是为什么?或者更好的问题是,url参数究竟在哪里转换为控制器名称?我试图通过调试器找到几个小时。
预期行为:未找到控制器
当前行为:查看!未找到abc / inde.phtml
这很奇怪,请指点我。谢谢。
更新
所以,经过更多的时间我找到了原因,为什么这样的人物呢!和@被修剪:
Zend_Controller_Dispatcher_Abstract::_formatName()
功能正在执行以下操作:
$segment = preg_replace('/[^a-z0-9 ]/', '', $segment);
问题是,如何跳过它并获得正确的状态(不是现有的控制器)
答案 0 :(得分:0)
好的,所以没有明确的解决方案,或者至少我没有找到任何解决方案。实际上我有解决方法 - 使用静态路由器来执行其他操作,例如“ind”而不是“index”。如果字符不正确,控制器将匹配,但默认操作不匹配,将导致请求404响应。
问题出现在ZF1本身,因为控制器名称是已绑定的,但操作名称不是。我想,Shoulld既可以是也可以不是。