Поэтому, прочитав этот вопрос по версии API, я решил префикс всех моих маршрутов с номером версии:
http://localhost/api/1.0/user/login
Но когда я делаю исключение в Exceptions Core, он говорит, что маршрут:
10/UserControll...
Я пытался избежать периода, но это не сработало. Может ли кто-нибудь повторить эту проблему и подумать о возможном решении?
Это маршрут, который я использую для вышеуказанного:
$route['1.0/user/(:any)'] = '1.0/UserController/$1';
Это мои разрешенные символы URI:
$config['permitted_uri_chars'] = 'az 0-9~%\.:_\-';
Open libraries/Input.php (system/core/Input.php in CI version 2.0+) and locate function _clean_input_keys($str){, The whole block should look like so: function _clean_input_keys($str) { if ( ! preg_match("/^[a-z0-9:_\/-]+$/i", $str)) { exit('Disallowed Key Characters.'); } return $str; }
Проверьте, есть ли у этого. в preg_match. Если не добавить его, чтобы ваше регулярное выражение выглядело так:
/^[a-z0-9:_\/-\.]+$/i
У вас есть (.) В вашем
$config['permitted_uri_chars'] = 'az 0-9~%.:_\-';
И каково ваше имя контроллера?
Я думаю, у вас должно быть имя контроллера на вашем пути до имени метода.
Что-то вроде этого :
$route['controller_name/1.0/user/(:any)'] = ...
Проблема заключается в строке 468 system/core/Router.php
. Измените set_directory
следующим образом:
$this->directory = str_replace(array('/', '.'), '', $dir).'/';
К этому:
$this->directory = str_replace(array('/'), '', $dir).'/';
У кого-нибудь есть предположение или гангстер о том, почему маршрутизатор удаляет периоды из имен каталогов?