我正在尝试匹配此网址:
http://www.example.org/en/site/page/id/1
遵守这些规则:
'rules'=>array(
'/'=>'site/index',
'<lang>/<controller:\w+>'=>'<controller>/index',
'<lang>/<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
'<lang>/<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>/<id>',
'<lang>'=>'/',
),
我认为它有效但不起作用。
答案 0 :(得分:3)
您的网址包含“id”字符串/文字http://www.example.org/en/site/page/id/1,这不是必需的......
使用
尝试网址http://www.example.org/en/site/page/1
或者再添加一条路线
'<language:\w+>/<controller:\w+>/<action:\w+>/id/<id:\d+>' =>'<controller>/<action>/<id>',
它应该双向工作..
答案 1 :(得分:0)
看起来语言参数路由的格式不正确。试试这个:
'rules' => array(
'/' =>'site/index',
'<language:\w+>/<controller:\w+>' =>'<controller>/index',
'<language:\w+>/<controller:\w+>/<action:\w+>' =>'<controller>/<action>',
'<language:\w+>/<controller:\w+>/<action:\w+>/<id:\d+>' =>'<controller>/<action>/<id>',
'<language:\w+>' =>'/',
),
答案 2 :(得分:0)
尝试将更具体的规则移到顶部。
'rules'=>array(
'<lang:\w+>/<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>/<id>',
'<lang:\w+>/<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
'<lang:\w+>/<controller:\w+>'=>'<controller>/index',
'<lang:\w+>'=>'/',
'/'=>'site/index',
),
[编辑]修复了lang regex *学分给Moz Morris。