这使我可以轻松获得动态输入变量,而不是像 /en/etcetcetc 那样放置静态前缀,但问题是所有控制器都被阻止了。一切都进入索引/索引。
问题:我怎么知道这条规则允许现在的一切,但不要跟踪它是否包含http://site.com/donotcatch/me和http://site.com/iamnotbelongstodynamic1/blabla
protected function _initRoutes()
{
...
$dynamic1 = new Zend_Controller_Router_Route(
'/:variable0/:variable1',
array(
'controller' => 'index',
'action' => 'index'),
array(
'variable0' => '^[a-zA-Z0-9_]*$',
'variable1' => '^[a-zA-Z0-9_]*$',
)
);
跟进:
通常,我总是相信是的,我们可以,所以,我们可以像这样在 dynamic1 不与我的其他静态控制器交互的情况下这样做:
// http://site/yeswecan/blabla
// variable0 = yeswecan
// variable1 = blabla
$dynamic1 = new Zend_Controller_Router_Route(
'/:variable0/:variable1',
array(
'controller' => 'index',
'action' => 'index'),
array(
'variable0' => '^[a-zA-Z]*$',
'variable1' => '^[a-z0-9_]*$',
)
);
// http://site/ajax/whatever...
// solves it
$dynamic2 = new Zend_Controller_Router_Route(
'/ajax/:variable0',
array(
'controller' => 'ajax',
'action' => ''
),
array(
'variable0' => '^[a-zA-Z0-9_]*$',
)
);
// http://site/order/whatever...
// solves it
$dynamic3 = new Zend_Controller_Router_Route(
'/order/:variable0',
array(
'controller' => 'order',
'action' => ''),
array(
'variable0' => '^[a-zA-Z0-9_]*$',
)
);
笔记:
- 控制器仍然失败,例如 http://site/ajax/whatever总是去 /ajax/index 我想把它作为 /ajax/user-inserted-value 发送
如何通过保留 $dynamic1 来修复 $dynamic2 和 $dynamic3 ?