diff options
author | Andrey Andreev <narf@devilix.net> | 2015-08-05 11:26:22 +0200 |
---|---|---|
committer | Andrey Andreev <narf@devilix.net> | 2015-08-05 11:26:22 +0200 |
commit | abc299b3a234eb7da1b7e3d257b7eba2da649219 (patch) | |
tree | 4a0136703384524722d07d5f085df9eb9f1e531f /system/core | |
parent | 6cefc6bb25c4a30cd86515a831ce0ac82cc43073 (diff) |
Fix #4027
Diffstat (limited to 'system/core')
-rw-r--r-- | system/core/Router.php | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/system/core/Router.php b/system/core/Router.php index ab5246a1f..0c793e418 100644 --- a/system/core/Router.php +++ b/system/core/Router.php @@ -375,16 +375,19 @@ class CI_Router { // Is there a literal match? If so we're done if (isset($this->routes[$uri])) { - // Check default routes format - if (is_string($this->routes[$uri])) + // Is it an HTTP verb-based route? + if (is_array($this->routes[$uri])) { - $this->_set_request(explode('/', $this->routes[$uri])); - return; + $route = array_change_key_case($this->routes[$uri], CASE_LOWER); + if (isset($route[$http_verb])) + { + $this->_set_request(explode('/', $route[$http_verb])); + return; + } } - // Is there a matching http verb? - elseif (is_array($this->routes[$uri]) && isset($this->routes[$uri][$http_verb])) + else { - $this->_set_request(explode('/', $this->routes[$uri][$http_verb])); + $this->_set_request(explode('/', $this->routes[$uri])); return; } } @@ -392,9 +395,10 @@ class CI_Router { // Loop through the route array looking for wildcards foreach ($this->routes as $key => $val) { - // Check if route format is using http verb + // Check if route format is using HTTP verbs if (is_array($val)) { + $val = array_change_key_case($val, CASE_LOWER); if (isset($val[$http_verb])) { $val = $val[$http_verb]; |