【问题标题】:CodeIgniter Url Rewrite (language dependent)CodeIgniter Url Rewrite(取决于语言)
【发布时间】:2011-01-25 18:36:46
【问题描述】:

所以,我有我的 .htaccess,我的控制器,一切都很好。我添加了本地化,所以现在我有葡萄牙语(默认)、英语和意大利语。
我正在使用 appplication/languages 目录中的 _lang 文件,我正在使用 session->userdata('lang') 并且一切正常。 我的控制器在顶部菜单之后以葡萄牙语命名。我正在寻找的是:
重写我的 url,更改控制器的名称,具体取决于 session->userdata('lang')。
这甚至可能吗?如何?

谢谢

所以我正在尝试,正如 InFog 建议的那样,在路由文件中:

if ($this->session->userdata('lang') == 'english') { 
    $route['novidades/([a-z]+)'] = 'news/$1'; 
}

但是当我打开应用程序时我只是得到一个空白屏幕。
而且我在没有 if 子句的情况下尝试过,当我转到

时,什么也没有发生

http://localhost/myapp/novidades

网址保持不变

【问题讨论】:

    标签: codeigniter localization url-rewriting


    【解决方案1】:

    您可以使用 CodeIgniter 路由解决此问题。你可以编辑文件'system/application/config/routes.php:

    $route['news/([a-z]+)'] = 'noticias/$1';
    

    这样,像“/news/run-fools”这样的 URL 将被重新映射到“noticias/run-fools”。现在你可以只有一个控制器 =)

    祝你好运

    【讨论】:

    • 我在您发表评论后编辑了我的问题。可以看看吗?
    • 我走错路了,我希望 codeigniter 用本地化的 uri 替换主 uri,我要做的是编写依赖于语言的 hrefs 已解决,谢谢大家
    • 嗨!你不需要那个'if',只需添加路线,这样你就有两个地址到同一个页面。尝试使用 (:any) 代替 ([a-z]+)。
    【解决方案2】:

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

    【讨论】:

    • 我必须去研究如何进行覆盖。我稍后会留下一些反馈。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    相关资源
    最近更新 更多