我根据 http://codeigniter.com/forums/viewthread/179036/ 在我的 ci 应用程序中实现了 i18n但我的自定义路线不再起作用。
/* 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';
“注册”、“登录”和“注销”不会路由到 auth/something。知道为什么吗?我收到 404 错误(当我打开 en/login 时,它想使用登录 Controller 而不是身份验证)
最佳答案
路由按照它们在routes.php
中出现的顺序执行。因此,当您尝试 en/login
时,它将到达 $route['^(en|de)/(.+)$'] = "$2";
的行> 然后将其路由到 Controller 登录
您实际上想要执行 2 个不同的重新路由..(从 en/login
-> 'login' -> 'auth/login' )这就是它失败的原因。
您可能只需要为身份验证添加特殊规则,如下所示:
$route['^(en|de)/register'] = 'auth/register';
$route['^(en|de)/login'] = 'auth/login';
$route['^(en|de)/logout'] = 'auth/logout';
..并确保将其放在通用 i18n 路由之前。
阅读the online documentation了解更多信息。
关于使用 i18n 的 Codeigniter 自定义路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7141765/