我根据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)
答案 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了解详情。