想象一下情况,当 url 看起来像
其中页面参数是可选的。
当然,应该定义自定义路由。考虑以下代码:
$route = new Zend_Controller_Router_Route_Regex(
'catalog/([-a-z]+)(?:\?page=([0-9]*))?',
array('controller'=>'catalog','action'=>'list','page'=>''),
array(1=>'section',2=>'page'),
'catalog/%s?page=%d'
);
$router->addRoute('catalog-section-page',$route);
但这条路线不会被“?”触发 url 中的符号。
没有 '?' (例如,通过向模式添加转义的 '!' 符号)一切正常。有没有办法实现'?存在于自定义的正则表达式路由中?也许我在模式上做错了什么?
PS:不要提供使用 '/' 而不是 '?',问题正是关于 Zend_Controller_Router_Route_Regex 实现中的模式限制。