2016-05-27 98 views
0

我試圖讓Yii中2某些URL規則,所以我可以從控制器這樣的訪問操作:urlManager規則不工作的模塊Yii2

controller/action/1 -> controller/action (with a parameter) 

我嘗試了一些規則,但他們將無法正常工作在我的模塊(www.example.com/midend,www.example.com/backend)中。

所以,如果我想訪問www.example.com/controller/action/1它工作得很好,但如果我想訪問www.example.com/midend/controller/action/1它返回404

這些是模塊的規則:

'<module:\w+>/<controller:\w+>/<action:\w+>/<id:\w+>' => '<module>/<controller>/<action>', 
'<module:\w+>/<controller:\w+>/<action:\w+>' => '<module>/<controller>/<action>', 
'<module:\w+>/<controller:\w+>/<id:\w+>' => '<module>/<controller>', 

這些都是沒有規則模塊:

'<controller:\w+>/<action:\w+>/<id:\w+>' => '<controller>/<action>', 
'<controller:\w+>/<action:\w+>' => '<controller>/<action>', 
'<controller:\w+>/<id:\w+>' => '<controller>', 

我已經嘗試過用midend更換<module:\w+>

+0

爲什麼''而不是''? – soju

+0

@soju好吧,我從行動中複製了並用id替換。猜'\ d'更有意義。 –

回答

1

假設你的ID是整數,你應該簡單地通過這個替換您的規則:

'<controller>/<action>/<id:\d+>' => '<controller>/<action>', 

它將爲工作:

  • www.example.com/controller
  • WWW。 example.com/controller/action
  • www.example.com/controller/action/1
  • www.example.com/module(a ssuming你有一個默認的控制器)
  • www.example.com/module/controller
  • www.example.com/module/controller/action
  • www.example.com/module/controller/action/1
+0

謝謝。之後我意識到我的ID也是字符,所以我用'\ w'替換了'\ d'。工作完美。 –