Periods not allowed in CodeIgniter URI?

后端 未结 3 1358
粉色の甜心
粉色の甜心 2021-01-29 05:18

So after reading this question on API versioning, I decided to prefix all my routes with a version number:

http://localhost/api/1.0/user/login

相关标签:
3条回答
  • 2021-01-29 05:23
    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;
    }
    

    Check if this has '.' in the preg_match. If not add it, so that your regular expression look like this-

    /^[a-z0-9:_\/-\.]+$/i
    
    0 讨论(0)
  • 2021-01-29 05:44

    Do you have the (.) in your

    $config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';
    

    And what is your controller name ?

    I think you must have the controller name in your route before the method name.

    Something like this :

    $route['controller_name/1.0/user/(:any)'] = ...
    
    0 讨论(0)
  • 2021-01-29 05:46

    The problem is on line 468 of system/core/Router.php. Change set_directory from this:

    $this->directory = str_replace(array('/', '.'), '', $dir).'/';
    

    To this:

    $this->directory = str_replace(array('/'), '', $dir).'/';
    

    Anyone have a guess or gander as to why the Router removes periods from directory names?

    0 讨论(0)
提交回复
热议问题