【发布时间】:2015-10-11 18:01:51
【问题描述】:
我正在构建一个带有CodeIgniter 3.0 版本的多语言网站,并且在路由方面存在一些错误。
首先,我在 i18n 中使用 this 库。当然,我对 3.0 版做了一点改动,因为这个库是 2.0 版的。我刚刚对MY_Config.php 文件进行了更改。
原MY_Config.php文件:
class MY_Config extends CI_Config {
function site_url($uri = '')
{
if (is_array($uri))
{
$uri = implode('/', $uri);
}
if (class_exists('CI_Controller'))
{
$CI =& get_instance();
$uri = $CI->lang->localized($uri);
}
return parent::site_url($uri);
}
}
我的MY_Config.php 文件:
class MY_Config extends CI_Config
{
public function site_url($uri = '', $protocol = NULL)
{
if (is_array($uri))
{
$uri = implode('/', $uri);
}
if (function_exists('get_instance'))
{
$uri = get_instance()->lang->localized($uri);
}
return parent::site_url($uri, $protocol);
}
}
我的问题是关于(:num) 的事情。除了(:num) 之外,所有页面都正常路由。例如,这个工作完美;
$route['^(tr|en)/(.+)$'] = '$2';
$route['tr/admin/main'] = 'back/home';
但是这个不工作。它给了404 error。
$route['^(tr|en)/(.+)$'] = '$2';
$route['tr/admin/main/(:num)'] = 'back/home/$1';
我尝试将back/home/$1 更改为back/home/$3,但没有任何改变。
我还有一个我无法解决的问题。如果我想使用更多的语言,我必须在这个结构中添加不同的路由文件变量。例如;如果我想使用法语,我需要在application/config/routes.php上添加这一行:
$route['fr/admin/main/(:num)'] = 'back/home/$1';
但我知道这不是真正的方法。如果你也对这个有任何报价,你让我很高兴。
提前致谢!
【问题讨论】:
标签: php codeigniter routing internationalization