有什么方法可以在 YII 框架中有条件地触发 urlManager

Is there any way to trigger urlManager conditionally in YII framework

我有以下代码-

'urlManager'=>array(
        'urlFormat'=>'path',
                    //'showScriptName'=>false,
                    //'caseSensitive'=>false,
        'rules'=>array(
            ''=>'site/home',
            'logout'=>'site/logout',
            'login' =>'site/login',
            'page/about' => 'page/show/id/1',               
            '<cat0:[a-zA-Z\-0-9]+>/<cat1:[a-zA-Z\-0-9]+>/<name:[a-zA-Z\-0-9]+>' => 'product/single',
            '<cat0:[a-zA-Z\-0-9]+>/<cat1:[a-zA-Z\-0-9]+>' => 'product/products',
            '<cat0:[a-zA-Z\-0-9 ]+>' => 'product/subcategories',

        ),
    ),

但是当我使用任何站点路径示例时-

/site/contact/

Yii 认为它是 cat0 和 cat1 因此它将我转发到 product/products 控制器 $_GET['cat0'] = site$_GET['cat1'] = contact.

有什么办法吗?

这是错误的。您的规则是:

any_word/any_word 将转到 product/products

site/contact 将转到 product/products

所以试试这个:products/<cat0:[a-zA-Z\-0-9]+>/<cat1:[a-zA-Z\-0-9]+>' => 'product/products',

现在products/cat1/cat2会去/product/products

要了解更多信息,请阅读此部分:Adding Rules Dynamically