在codeigniter中路由西里尔字符

时间:2012-01-20 07:23:59

标签: php codeigniter

如何在codeigniter中允许路由西里尔字符?

2 个答案:

答案 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~%.:_\-абвгдеёжзийклмнопрстуфхцчшщъыьэюя';