在Codeigniter中为多语言站点重新添加额外参数

时间:2015-08-17 04:13:39

标签: php codeigniter routes

在我的codeigniter webapp中,我正在使用多语言网站。默认和英文如下:

www.xxx.com (default)
www.xxx.com/en (english)

我有一个控制器,我想重新路由特定的电话,比如马铃薯和西红柿这样的蔬菜:

www.xxx.com/potato/param => www.xxx.com/vegie/param
www.xxx.com/tomato/param => www.xxx.com/vegie/param

到目前为止,我已经设法在我的route.php中使用默认语言url重新路由:

$route['potato/(.+)$'] = 'vegie/$1';
$route['tomato/(.+)$'] = 'vegie/$1';

但我不为英文网站工作。我确实喜欢这样,而且没有工作:

$route['en/potato/(.+)$'] = 'en/vegie/$1';
$route['en/tomato/(.+)$'] = 'en/vegie/$1';

任何人都可以帮助我吗?感谢。

3 个答案:

答案 0 :(得分:0)

首先,创建新功能来管理英文版,例如:function vegie_en()

然后路由到它

$route['en/potato/(:any)'] = 'vegie_en/$1';

答案 1 :(得分:0)

我发现了这个问题。我在我的route.php中有这个,如果有前缀en /:

,它会错误地重新路由
$route['en/(.+)$'] = '$1';

我把它移到了route.php的末尾,现在它工作得非常好。

答案 2 :(得分:0)

我的项目遇到了同样的问题。我通过删除' en'来修复它。并将2美元作为动态值。 所以在你的情况下,这将工作。请尝试下面给出的代码。 $route['en/potato/(.+)$'] = 'vegie/$2'; $route['en/tomato/(.+)$'] = 'vegie/$2';