YII:如果有GET参数,如何实现不同的路由?

YII:如果有GET参数,如何实现不同的路由?,yii,yii-url-manager,Yii,Yii Url Manager,在Yii URL管理器中,如果附加了GET参数,我想为URL定义不同的路由。例如,URL“shopping wizard/”应转到route shopping wizard/索引,URL“shopping wizard/?answer=10”应转到route shopping wizard/结果 我尝试了以下规则: 'urlManager'=>array( 'rules'=>array( 'shopping-wizard/?answer=<answer&

在Yii URL管理器中,如果附加了GET参数,我想为URL定义不同的路由。例如,URL“shopping wizard/”应转到route shopping wizard/索引,URL“shopping wizard/?answer=10”应转到route shopping wizard/结果

我尝试了以下规则:

'urlManager'=>array(
    'rules'=>array(
        'shopping-wizard/?answer=<answer>' => 'shoppingWizard/result',
        'shopping-wizard/' => 'shoppingWizard/index',
    ),
),
'urlManager'=>数组(
'规则'=>数组(
“购物向导/?答案=”=>“购物向导/结果”,
“购物向导/”=>“购物向导/索引”,
),
),
这不起作用,因为CUrlRule::parseUrl()会在模式中添加一个尾随斜杠。由于SEO原因,我的带有参数的URL可能没有尾随斜杠


它确实可以与URL规则组件一起工作,但是有没有更简单的方法呢?没有单独的组件?

您可以使用如下规则:

'urlManager'=>array(
    'rules'=>array(
        'shopping-wizard/<answer:\d+>' => 'shoppingWizard/result', //d+ - digits only
        'shopping-wizard/' => 'shoppingWizard/index',
    ),
),
public function actionResult($answer) {
    ...
}