我正在进行一个项目,现在[管理部分已经完成](我知道有点迟了)我正在尝试为项目实施i18n。
我认为一切正常,除非我输入http://localhost/my_project
而my_project正在使用CI安装工作目录时,我被重定向到以下http://localhost/my_project/enhome
(en
之后没有任何尾随斜线)任何想法?
期待结果http://localhost/my_project/en/home
,而不只是home
控制器,但所有控制器的行为都相同。
.htaccess
,base_url
和index_page
设置正确(所有工作都没有i18n)。
routes.php 缺货
$route['default_controller'] = "home";
$route['404_override'] = '';
// URI like '/en/about' -> use controller 'about'
$route['^(en|de|fr|nl)/(.+)$'] = "$2";
// '/en', '/de', '/fr' and '/nl' URIs -> use default controller
$route['^(en|de|fr|nl)$'] = $route['default_controller'];
修改 我正在使用ellislab中的“new”i18n。对不起,链接错误(1.7 CI版本)。
答案 0 :(得分:2)
所以经过一番挖掘后,我在核心文件中发现了问题,在这个发布的脚本的底部有变量$new_url
,它没有“修复”而回显Redirect triggered to http://192.168.1.184/my_project/enhome
。我刚刚在那里添加了/
,它完美地运作我想知道这里发生了什么,如果这是OK
修复的话。
function MY_Lang() {
parent::__construct();
global $CFG;
global $URI;
global $RTR;
$this->uri = $URI->uri_string();
$this->default_uri = $RTR->default_controller;
$uri_segment = $this->get_uri_lang($this->uri);
$this->lang_code = $uri_segment['lang'] ;
$url_ok = false;
if ((!empty($this->lang_code)) && (array_key_exists($this->lang_code, $this->languages)))
{
$language = $this->languages[$this->lang_code];
$CFG->set_item('language', $language);
$url_ok = true;
}
if ((!$url_ok) && (!$this->is_special($uri_segment['parts'][0]))) // special URI -> no redirect
{
// set default language
$CFG->set_item('language', $this->languages[$this->default_lang()]);
$uri = (!empty($this->uri)) ? $this->uri: $this->default_uri;
//OPB - modification to use i18n also without changing the .htaccess (without pretty url)
$index_url = empty($CFG->config['index_page']) ? '' : $CFG->config['index_page']."/";
$new_url = $CFG->config['base_url'].$index_url.$this->default_lang()."/".$uri;
echo "Redirect triggered to ".$new_url;
//header("Location: " . $new_url, TRUE, 302);
// exit;
}
}
答案 1 :(得分:0)
这个库有点老了从来没有更新过的作者很久以来它适用于CI 1.7但这里是与CI 2.1兼容的更新版本。*相同的库但更新版本的工作方式与此处可以从这里下载