我正在构建一个版本为CodeIgniter 3.0
的多语言网站,并且在路由方面存在一些错误。
首先,我使用this库为i18n。当然,我对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';
但我知道这不是真正的方法。如果你对这个也有任何报价,你会让我开心。
提前致谢!
答案 0 :(得分:1)
我解决了!
只需删除$route['^(tr|en)/(.+)$'] = "$2";
上的application/config/routes.php
行即可。这就是全部。