Yii框架urlManager重写规则

Yii框架urlManager重写规则,yii,Yii,我有一个如下所示的url: <controller>/<action>/param/value param/value mysite.domain/user/username123 如何实现这一目标 我尝试了这个规则,但不确定它是否正常(控制器是account,操作是index) “用户/”=>“帐户/索引/用户/测试” 如果我正确理解了您的问题,您希望如下处理URL: <controller>/<action>/param/value p

我有一个如下所示的url:

<controller>/<action>/param/value
param/value
mysite.domain/user/username123
如何实现这一目标

我尝试了这个规则,但不确定它是否正常(控制器是account,操作是index)

“用户/”=>“帐户/索引/用户/测试”

如果我正确理解了您的问题,您希望如下处理URL:

<controller>/<action>/param/value
param/value
mysite.domain/user/username123
并在AccountController中调用actionIndex,使用参数User,该参数(在本例中)等于“username123”

在这种情况下,您可以尝试以下规则:

'user/<user:.*>' => 'account/index/<user>'

我会避免将参数放入动作签名中,因为yii根本不会处理签名不匹配的动作。。。事实上,将$user放入将绑定该操作,使其始终需要指定$user。如果您决定更改功能,跟踪操作未被调用的原因将比确定未设置$u GET的原因更困难。。。我建议不要将$user添加到签名中,只需在您的操作中执行以下操作

//will always run on /user/<USER:.*>
function actionIndex(){
    $user = isset($_GET['user'])?$_GET['user']:NULL;
    if(!is_null($user)){
        //your user specific account action..
    }else{
        //handle your error gracefully..
    }
}
//将始终在/user上运行/
函数actionIndex(){
$user=isset($\u GET['user'])?$\u GET['user']:NULL;
如果(!为null($user)){
//您的用户特定帐户操作。。
}否则{
//优雅地处理你的错误。。
}
}
这种方法让你的行动更加灵活。URL规则应如下所示:

'user/<user:.*>' => 'account/index/user/<user>' //user is defined as a get...
'user/'=>'account/index/user/'//用户被定义为一个get。。。

希望这有助于&快乐编码

urlManager
的工作方式正好相反,您需要的是
.htaccess
重定向。