使用i18n的codeigniter自定义路由

时间:2011-08-21 23:11:54

标签: codeigniter internationalization

我根据http://codeigniter.com/forums/viewthread/179036/将i18n实施到了我的ci应用程序,但我的自定义路线不再有用了。

/* custom routes */
// URI like '/en/about' -> use controller 'about'
$route['^(en|de)/(.+)$'] = "$2";
// '/en' and '/de' URIs -> use default controller
$route['^(en|de)$'] = $route['default_controller'];

$route['register'] = 'auth/register';
$route['login'] = 'auth/login';
$route['logout'] = 'auth/logout';

'register','login'和'logout'不会路由到auth / something。知道为什么吗?我收到404错误(当我打开en / login时,它想要使用登录控制器而不是auth)

1 个答案:

答案 0 :(得分:3)

路线按照它们在routes.php中的显示顺序执行。因此,当您尝试en/login时,它会到达显示$route['^(en|de)/(.+)$'] = "$2";的行,然后将其路由到控制器login

你实际上想要做两个不同的重新路由..(来自en/login - >'登录' - >'auth / login')这就是为什么它失败了。

你可能只需要为这样的auth添加特殊规则:

$route['^(en|de)/register'] = 'auth/register';
$route['^(en|de)/login'] = 'auth/login';
$route['^(en|de)/logout'] = 'auth/logout';

..并确保将置于之前您的通用i18n路线。

阅读the online documentation了解详情。