我正在使用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)
有什么想法吗?
答案 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',