Case Insensitive Routing in CodeIgniter

前端 未结 8 1008
南笙
南笙 2021-01-13 21:46

I\'ve written this in the CodeIgniter\'s routers.

$route[\'companyname\'] = \"/profile/1\";

This is working fine but when I type \"CompanyN

8条回答
  •  粉色の甜心
    2021-01-13 22:01

    Uhm, well, an dirty but straight to the point way would be to make a small hack to the core Uri class. Open the uri.php file inside system/core/ , scroll to line 269 where you have the method _explode_segments() and make them lowercase. Bad method, but should work.

    function _explode_segments()
    {
        foreach (explode("/", preg_replace("|/*(.+?)/*$|", "\\1", $this->uri_string)) as $val)
        {
            // Filter segments for security
            $val = trim($this->_filter_uri($val));
    
            if ($val != '')
            {
                        // $this->segments[] = $val;  // <--- ORIGINAL
                $this->segments[] = strtolower($val);   // <--- CHANGED
            }
        }
    }  
    

    Just consider that if you upgrade your install this changes will be overwritten, but they're so small anyway. Alternatively, you might go for a pre_system hook, but I think it would be much more difficult

    Also, in routes you should not use leading or trailing slashes, so it must be

    $route['companyname'] = "profile/1";
    

提交回复
热议问题