Yii2 Url i8n带子文件夹

时间:2017-08-08 08:18:33

标签: yii2

我正在使用i8n进行项目,我有/config/web(Yii2 Basic):

'article/<id:\d+>/<slug>' => 'article/view',
'<language:\w{2}>' => 'site/index',
'<language:\w{2}>/<_c:\w+>' => '<_c>',
'<language:\w{2}>/<_c:\w+>/<_a:\w+>' => '<_c>/<_a>',
'<language:\w{2}>/<_m:\w+>' => '<_m>',
'<language:\w{2}>/<_m:\w+>/<_c:\w+>' => '<_m>/<_c>',
'<language:\w{2}>/<_m:\w+>/<_c:\w+>/<_a:\w+>' =>

如果我有这个网址: 2012/it/site/index - 工作正常

2012/it/folder/site/index - 无法正常工作(错误404)

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

第一件事:

这些规则存在一些问题。

'<language:\w{2}>/<_c:\w+>' => '<_c>',
'<language:\w{2}>/<_m:\w+>' => '<_m>',

'<language:\w{2}>/<_c:\w+>/<_a:\w+>' => '<_c>/<_a>',
'<language:\w{2}>/<_m:\w+>/<_c:\w+>' => '<_m>/<_c>',

对于应用程序,这两个规则被视为相同,因此没有必要添加所有规则 - 只需添加一个。您需要找到设置操作参数的其他方法。

第二件事:

始终按照从最复杂到最不复杂的顺序设置规则,以便正确捕获它们。

'article/<id:\d+>/<slug>' => 'article/view',
'<language:\w{2}>/<_c:\w+>/<_a:\w+>' => '<_c>/<_a>',
'<language:\w{2}>/<_c:\w+>' => '<_c>',
'<language:\w{2}>' => 'site/index',