2013-08-31 80 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的數字。