2013-08-31 59 views
0

在我的Yii测试应用程序中,我有2种类型的URL。示例如下: -有没有优先urlManager规则?

http://localhost/testapp/index.php?r=post/view&id=1&slug=maximizing-profit 
http://localhost/testapp/index.php?r=category/view&slug=investment 

第一个URL有2个参数; idslug,而第二个参数只有slug参数

而在我的urlManager,我有2条规则

<controller:\w+>/<action:\w+>/<slug:[a-zA-Z0-9-]+>/' => '<controller>/<action> 
<controller:\w+>/<action:\w+>/<id:\d+>/<slug:[a-zA-Z0-9-]+>/' => '<controller>/<action> 

有了这个规则,我的第一个URL似乎是畸形的,由此它将显示为

http://localhost/testapp/post/view/maximizing-profit?id=1 

第二个URL e其他手显示正常

http://localhost/testapp/category/view/investment 

urlManager中是否存在规则优先级,我们应该遵循?

+0

[Yii框架:错误的创建网址]的可能的重复(http://stackoverflow.com/questions/17669643/yii-framework-wrong-creating-urls)。像这些问题每隔几周就会出现一次。请先在SO上做一些研究。 –

回答

0

将使用首先匹配URL的任何规则。

就你而言,只需切换两个规则的顺序即可。这是因为你的子弹规则也匹配数字,包括只有ID的数字。如果您切换规则,那些带有数字的ID将被首先捕获,然后是具有非数字ID的数字。