Вы должны добавить несколько маршрутов, что-то вроде
$router->addRoute('level1cat', new Zend_Controller_Router_Route(
'products/:cat1/:page',
array(
'controller' => 'product',
'action' => 'index',
'page' => 1
),
array(
'cat1' => '\w+',
'page' => '\d+'
)
));
$router->addRoute('level2cat', new Zend_Controller_Router_Route(
'products/:cat1/:cat2/:page',
array(
'controller' => 'product',
'action' => 'index',
'page' => 1
),
array(
'cat1' => '\w+',
'cat2' => '\w+',
'page' => '\d+'
)
));
$router->addRoute('level3cat', new Zend_Controller_Router_Route(
'products/:cat1/:cat2/:cat3/:page',
array(
'controller' => 'product',
'action' => 'index',
'page' => 1
),
array(
'cat1' => '\w+',
'cat2' => '\w+',
'cat3' => '\w+',
'page' => '\d+'
)
));
Вы можете использовать различные действия регулятора на маршруте, это до вас, как вы на самом деле обрабатывать данные.
Заметим, что это совершенно непроверенные и только моя догадка на данный момент (работает в .NET прямо сейчас, не может даже дразнить его)
Один важный момент, вы можете заметить, в обоих ответах ниже, мы «Оба использовали контроллер под названием« продукт », а не« продукты ». Это делается для предотвращения конфликтов с маршрутизатором по умолчанию. – Phil