所有页面的url codeigniter多语言

时间:2016-04-14 11:04:44

标签: php mysql codeigniter

我有基本网址localhost / new /用于多语言网站。当更改语言语言出现在url localhost / new / en等时。问题是当我更改页面时语言消失localhost / new / popular_tests,当停留在该页面时我改变语言url返回localhost / new /恩。目的是为特定页面添加语言,如localhost / new / popular_tests / en等。

我有控制器:

public function changeLang($lang_code=''){
            $this->lang->load('main', $lang_code=='' ? 'english' : $lang_code);
                    $this->session->set_userdata('language',$lang_code);

                     redirect(base_url().''.$lang_code);

        }

在config / route.php中我有:

$route['default_controller'] = 'home';
$route['(:any)/test'] = 'home/test/$1';
$route['popular_tests'] = 'home/popular_tests';
$route['404_override'] = '';
$route['translate_uri_dashes'] = TRUE;


$route['^(\w{2})/(.*)$'] = '$2';
$route['^(\w{2})$'] = $route['default_controller'];

非常感谢提前。

2 个答案:

答案 0 :(得分:0)

这是因为您将route定义为$route['^en$'] = $route['default_controller'];,这意味着任何以en结尾的网址都会指向default_controller

尝试用以下方法替换该路线:

 $route['^new/(:any)/en$'] = 'home/$1';
 $route['(:any)/new/en$'] = $route['default_controller'];

PS:这是未经测试的版本

答案 1 :(得分:0)

您应该使用这个,

$route['(\w{2})/test'] = 'home/test';
$route['(\w{2})/(.+)'] = '$2';
$route['(\w{2})'] = $route['default_controller'];