Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CodeIgniter Url重写(语言相关)_Codeigniter_Localization_Url Rewriting - Fatal编程技术网

CodeIgniter Url重写(语言相关)

CodeIgniter Url重写(语言相关),codeigniter,localization,url-rewriting,Codeigniter,Localization,Url Rewriting,所以,我有我的.htaccess,我的控制器,一切都很好。我添加了本地化,所以现在我有葡萄牙语(默认)、英语和意大利语。 我使用appapplication/languages目录中的_lang文件,我使用session->userdata('lang'),一切正常。 我的控制器在顶部菜单后用葡萄牙语命名。我要找的是: 要重写我的url,请根据会话->用户数据('lang')更改控制器的名称。 这可能吗?怎么做 多谢各位 因此,正如InFog所建议的,我尝试在routes文件中: if ($th

所以,我有我的.htaccess,我的控制器,一切都很好。我添加了本地化,所以现在我有葡萄牙语(默认)、英语和意大利语。
我使用appapplication/languages目录中的_lang文件,我使用session->userdata('lang'),一切正常。 我的控制器在顶部菜单后用葡萄牙语命名。我要找的是:
要重写我的url,请根据会话->用户数据('lang')更改控制器的名称。
这可能吗?怎么做

多谢各位

因此,正如InFog所建议的,我尝试在routes文件中:

if ($this->session->userdata('lang') == 'english') { 
    $route['novidades/([a-z]+)'] = 'news/$1'; 
}
但当我打开应用程序时,只会出现一个空白屏幕。
我在没有if子句的情况下尝试了它,但当我转到


url保持不变

覆盖CI_路由器以转换fetch_class()方法中的名称以更改控制器。重写fetch_method()以更改方法

您可以使用CodeIgniter路由解决此问题。您可以通过编辑文件“system/application/config/routes.php”来完成此操作:

$route['news/([a-z]+)'] = 'noticias/$1';
这样,像“/news/run-dougs”这样的URL将被重新映射为“noticias/run-dougs”。现在您只需要一个控制器=)


祝你好运

我必须去调查一下如何才能做到这一点。稍后我会留下一些反馈。ThanxI在您的评论之后编辑了我的问题。你能检查一下吗?我做得不对,我想让codeigniter用本地化的uri替换主uri,我要做的就是编写依赖于hrefs语言的解决方案,谢谢大家!您不需要“如果”,只需添加路由,这样您将有两个地址到同一页面。尝试使用(:any)代替([a-z]+)。