代码点火器路由不起作用,可能是因为国际化


Codeigniter routes not working, possibly because of internationalization?

致力于代码点火器项目。被路线卡住了。我想通过 en/login 访问 en/company/login,那么我该如何定义路由呢?

现在路由代码如下所示:

// URI like '/en/about' -> use controller 'about'
$route['^(en|lv)/(.+)$'] = "$2";
// '/en', '/lv' URIs -> use default controller
$route['^(en|lv)$'] = $route['default_controller'];
$route['company/login'] = "login";

试:

$route['^(en|lv)/company/login'] = "login";

显然,我没有得到什么。你能帮忙吗?

你的问题是(我也有同样的情况)这个:

$route['^(en|lv)/(.+)$'] = "$2";

覆盖您的规则:

$route['^(en|lv)/company/login'] = "login";

试试这个:

$route['^(en|lv)'/(company)'/(.+)$'] = "login";

也许它应该可以帮助您覆盖第一种模式

如果没有,请将第一个模式编辑为:

$route['^(en|lv)'/(?!company).+$'] = "$2";
 $route["(en|fr|gr)/(:any)/login"] = "login/index/$1";

--

 public function index($company)
 {
       $language = strtolower($this->uri->rsegments[3]);
        if(!in_array($language, ['en', 'fr'])){
            // set a default language
            // if the route does not provide a valid one
            $language = 'en';
        }
        // Load the language file for the selected language
        // for example english, language/en/en_lang.php
        $this->lang->load($language, $language);
}

谢谢你的回答,但似乎我没有解释 /company/是控制器,/login/是"公司"功能。你 解决方案对我不起作用。:/

// The $route should contain the uri,
// you seem to have them mixed up.  
// $route['uri'] = "controller/method"
$route['(en|lv)/login'] = 'company/login';