【问题标题】:Reroute with extra parameter for multi language sites in Codeigniter使用 Codeigniter 中多语言站点的额外参数重新路由
【发布时间】:2015-11-09 15:15:52
【问题描述】:

在我的 codeigniter webapp 中,我使用的是多语言网站。默认和英文如下:

www.xxx.com (default)
www.xxx.com/en (english)

而且我有一个控制器,我想在其中将特定呼叫(例如土豆和番茄)重新路由到蔬菜,如下所示:

www.xxx.com/potato/param => www.xxx.com/vegie/param
www.xxx.com/tomato/param => www.xxx.com/vegie/param

到目前为止,我已经设法在我的 route.php 中使用这样的默认语言 url 重新路由:

$route['potato/(.+)$'] = 'vegie/$1';
$route['tomato/(.+)$'] = 'vegie/$1';

但我不为英文网站工作。我确实喜欢这个,但没有工作:

$route['en/potato/(.+)$'] = 'en/vegie/$1';
$route['en/tomato/(.+)$'] = 'en/vegie/$1';

任何人都可以帮助我吗?谢谢。

【问题讨论】:

    标签: php codeigniter routes


    【解决方案1】:

    首先,创建一个新的函数来管理英文版本,例如:function vegie_en()

    然后路由到它

    $route['en/potato/(:any)'] = 'vegie_en/$1';
    

    【讨论】:

    • shar_evonz,我想你并没有完全理解我的情况。不起作用的不是默认网址,而是带有 en/ 的英语
    • 基于您的路线:$route['en/potato/(.+)$'] = 'en/vegie/$1';你应该在你的默认控制器中有名为“en”的函数
    • 或者简单地说,创建新函数来处理那个英文版本,然后路由到它。例如:$route['en/potato/(:any)'] = 'vegie_en/$1';
    • 如果我创建另一个函数,意味着我复制了我不想要的代码。我只想使用一个代码,因为过程是一样的。
    【解决方案2】:

    我发现了问题。我的 route.php 中有这个,如果有前缀 en/:

    ,它会错误地重新路由
    $route['en/(.+)$'] = '$1';
    

    我把它移到了 route.php 的末尾,现在它工作得很好。

    【讨论】:

      【解决方案3】:

      我在我的项目中遇到了同样的问题。我通过删除“en”来修复它,并将 $2 作为动态值。 因此,在您的情况下,这将起作用。请尝试以下代码。 $route['en/potato/(.+)$'] = 'vegie/$2'; $route['en/tomato/(.+)$'] = 'vegie/$2';

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-19
        • 2011-02-16
        • 2020-03-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多