使用 i18n 的 Codeigniter 自定义路由

标签 codeigniter internationalization

我根据 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/

相关文章:

PHP Codeigniter foreach 崩溃

codeigniter - PyroCMS 语言支持

angular - Angular 7 中具有复数/选择属性的 i18n

ruby-on-rails-3 - 在 Rails route 翻译 slug 的最佳方法是什么

php - VPS 服务器 -> fatal error : Call to undefined function mysqli_init()

mysql - 使用 codeigniter 从数据库获取数据并在 View 中显示特定的数组索引

javascript - 网站语言选择

java - 在 JSP 中使用资源包属性进行国际化,非拉丁文本变为 Mojibake

mysql - 将值从数据库获取到组合框的问题

php - 我应该使用 Javascript 还是 PHP 设置全局变量来唯一标识 Web 应用程序中的每个页面