codeigniter3 基于多语言应用程序的 url 缩写与路由别名冲突

问题描述 投票:0回答:0

我有一个基于 codeigniter v3 的应用程序,有 5 种语言(ar、en、ru、es、fr),阿拉伯语是默认语言, 这是(添加资金)页面链接:


app.com/add_funds  
app.com/en/add_funds
app.com/ru/add_funds
app.com/es/add_funds
app.com/fr/add_funds

一切都按预期工作, 但是当我为某些路线设置别名时 404 出现了!

$route['存款'] = 'add_funds/index'; // 404

我的代码:

路线.php:


$route['default_controller']       = 'home';
$route['(\w{2})/(.*)']             = '$2';
$route['(\w{2})']                  = $route['default_controller'];
$route['404_override']             = 'custom_page/page_404';
$route['translate_uri_dashes']     = false;
$route['deposit']                  = 'add_funds/index';

.htaccess :


RewriteEngine On
Options +FollowSymLinks
Options -Indexes
RewriteCond %{SCRIPT_FILENAME} !-d  
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule . index.php [L,QSA] 

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

底座控制器功能:


function init_app_lang(){
        
    global $URI, $CFG, $IN;
    $CI = &get_instance();
    $supported_langs = ['en'=>'english','ru'=>'russian','es'=>'spanish','fr'=>'french'];
        
    $uri_abbr = $URI->segment(1);
    if ( isset($supported_langs[$uri_abbr]) && strlen($uri_abbr) == 2 ) {
     $langDefault = $supported_langs[$uri_abbr];
    set_session('langCurrent', $langDefault);
    }else{
    $langDefault = "arabic";
    set_session('langCurrent', $langDefault);
    }

}

谢谢&&对不起我的英语

php codeigniter-3
© www.soinside.com 2019 - 2024. All rights reserved.