在我的Yii测试应用中,我有两种类型的网址。示例如下: -
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个参数; id
和 slug
,而第二个参数只有 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>
根据此规则,我的第一个网址似乎格式不正确,因此会显示为
http://localhost/testapp/post/view/maximizing-profit?id=1
另一只手上的第二个网址显示正常
http://localhost/testapp/category/view/investment
我们应该遵循urlManager中的规则优先级吗?
答案 0 :(得分:0)
将首先使用与URL匹配的任何规则。
在您的情况下,只需切换两个规则的顺序。这是因为你的slug规则也匹配数字,包括那些只有ID的数据。如果您切换规则,将首先捕获带有数字作为ID的规则,然后捕获具有非数字ID的规则。