2014-09-30 163 views
0

我正在努力解决这个问题,并没有找到任何合适的答案。YII友好的SEO网址

我想my_site /用户/ 1成为my_site /用户/ USER_NAME

我urlManager是这样的:

'urlManager' => array(
    'urlFormat' => 'path', 
    'rules' => array(
    'user/<username:\w+>'=>'user/view', 
    '<controller:\w+>/<id:\d+>'=>'<controller>/view', 
    '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>', 
    '<controller:\w+>/<action:\w+>'=>'<controller>/<action>', 
), 
    'showScriptName' => false, 
), 

用户控制器:

public function actionView($username) 
{ 
    $this->render('view', array(
    'model' => $this->loadModel($username), 
)); 
} 

当我打/ /用户/管理它重定向到actionView不从我的控制器和我的actionAdmin有多个这样的动作,如创建,删除等。 我该如何避免这种情况?有其他选择吗?

谢谢。

+0

在URL管理器中,第一个值是用户/ 任何用户操作都会默认回到该操作。我会更改URL的用户部分来管理用户或类似的东西 – chaos505 2014-09-30 07:50:31

回答

0

urlManager尝试将url与控制器和操作进行匹配。 的

'user/<username:\w+>'=>'user/view', 

所述第一部分具有匹配所述用户控制器,它寻找它由字的任何串的下一部分,然后发送的用户到用户/视图

我建议改变user/<username>manage-user/<username>my-account/<username>,类似的东西。

+0

并且您建议创建另一个控制器ManageUserController或MyAccountController? – 2014-09-30 08:12:19

+0

不,只是将用户的第一部分/ 更改为您想要的任何链接/ 然后在浏览器URL中键入该链接。 第一部分是比赛第二部分是在哪里发送用户 – chaos505 2014-09-30 08:13:41