今天我偶然发现了一个问题,这似乎是 Zend 框架中的一个错误。给定以下路线:
<test>
<route>citytest/:city</route>
<defaults>
<controller>result</controller>
<action>test</action>
</defaults>
<reqs>
<city>.+</city>
</reqs>
</test>
和三个网址:
- mysite.local/citytest/柏林
- mysite.local/citytest/汉堡
- mysite.local/citytest/M%FCnchen
最后一个 Url 不匹配,因此不会调用正确的控制器。有人知道为什么吗?
仅供参考,Zend-Framework 1.0 在哪里使用(是的,我知道那很古老,但我不负责改变它:-/)
编辑:据我所知,我们将很快升级到 Zend 1.5.6,但我不知道什么时候,所以补丁会很棒。
编辑:我已经追踪到以下行(Zend/Controller/Router/Route.php:170):
$regex = $this->_regexDelimiter . '^' .
$part['regex'] . '$' .
$this->_regexDelimiter . 'iu';
如果我将其更改为
$this->_regexDelimiter . 'i';
有用。据我了解,u-修饰符用于处理亚洲字符。因为我不使用它们,所以我知道那个补丁很好。谢谢阅读。