我正在创建一个多语言网站。当没有设置语言参数时,我希望它是英语,当设置语言参数时,它是不同的语言。
我的路由如下所示:
$routes->connect('/:language/:controller/:action/*');
问题如下:
当我访问www.mydomain.com/users/login
时,它工作正常。
当我访问www.mydomain.com/fr/users/login
时,它工作正常(法语)。
但是当我访问www.mydomain.com/users/login/1
时,其中1
是我想要解析的自定义命名参数,它自然地认为users
是语言,login
是我的控制器,1
是我的动作。
我知道,如果我强迫总是有一个语言参数,这将不再是一个问题,但我不希望英文版本是在www.mydomain.com/en/
。我希望它是在www.mydomain.com
。
这是可行的吗?是否有一种方法可以忽略语言参数,如果它不是fr
或es
等?
可以指定匹配路由元素的正则表达式。所以你需要一些类似于
的东西$routes->connect(
'/:language/:controller/:action/*',
[],
['language' => 'fr|es']
);
参考CakePHP手册/API了解更多细节