在codeigniter中路由循环字符


Routing cyrillic characters in codeigniter

如何允许在codeigniter中路由cyrillic字符?

例如,假设您有以下路由:

controller/action/someId

现在让我们说你的控制器你想成为конралер(用西里尔字母或任何其他字母,所以你得到:

контролер/action/someId

显然,您不能将控制器类命名为"Конрилер",因此必须通过application/config/routes.php进行命名

遗憾的是,如果你去那里并键入:

$route['контролер/action/(:num)'] = "controller/action/$1"; 

为了匹配路由,Codeigniter将不使用控制器,但会抛出一个错误。

我花了一些时间才明白,Codeigniter得到了一个编码的URL,看起来像%5%6%7%24

因此,为了匹配编码的字符串,您必须在routes.php.中对其进行编码

你可以这样做,并保持代码可读性,如果你进入这样的路线:

$route[rawurlencode('контролер').'/action/(:num)'] = "controller/action/$1"; 

这将对URL的非拉丁字符部分进行编码,你也应该在链接中使用它,只是为了确保所有内容都是并行的,并且不会在某个地方失败,所以:

<?php echo site_url( rawurlencode('контролер').'/action/'.$id ); ?>

希望它能有所帮助!它完美地为我工作:))

在文件application/config/config.php中找到$config['permitted_uri_chars'] = 'a-z 0-9~%.:_'-';,并在其中添加每个允许的字符,例如:

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_'-абвгдеёжзийклмнопрстуфхцчшщъыьэюя';