我有多语言网站的基本url localhost/new/。当更改语言时,url localhost/new/en等中会显示语言。问题是,当我更改页面时,语言会显示localhost/new/popular_tests,当我停留在该页面时,更改语言后,url会返回localhost/new/en。目的是向特定页面添加语言,如localhost/new/popuple_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'];
非常感谢。
这是因为您将route
定义为$route['^en$'] = $route['default_controller'];
,这意味着任何以en
结尾的url都将指向default_controller
。
尝试用以下内容替换该路线:
$route['^new/(:any)/en$'] = 'home/$1';
$route['(:any)/new/en$'] = $route['default_controller'];
PS:这是未经测试的版本
您应该使用这个
$route['('w{2})/test'] = 'home/test';
$route['('w{2})/(.+)'] = '$2';
$route['('w{2})'] = $route['default_controller'];