如何在codeigniter中允许路由西里尔字符?
答案 0 :(得分:3)
比方说,您有以下路线:
controller/action/someId
现在说你的控制器你想成为контролер(用西里尔字母或任何其他字母表,所以你得到:
контролер/action/someId
显然你不能命名 Controller类“Контролер”,所以你必须通过 application / config / routes.php < / p>
可悲的是,如果你去那里输入:
$route['контролер/action/(:num)'] = "controller/action/$1";
为匹配路线,Codeigniter不会使用控制器但会引发错误。
我花了一些时间才明白Codeigniter获得的编码网址看起来像%5%6%77%24
因此,要匹配编码的字符串,您必须将其编码在 routes.php 中。
您可以这样做,并且如果您输入以下路线,则保持代码可读:
$route[rawurlencode('контролер').'/action/(:num)'] = "controller/action/$1";
这将编码非拉丁字符的URL部分,您也应该在链接中使用它,只是为了确保所有内容都是并行的,并且不会在某行的某处失败,所以:
<?php echo site_url( rawurlencode('контролер').'/action/'.$id ); ?>
希望它有所帮助!它对我来说完美无缺::))
答案 1 :(得分:0)
在文件application/config/config.php
中找到$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';
并在那里添加每个允许的字符 - 例如:
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-абвгдеёжзийклмнопрстуфхцчшщъыьэюя';