summaryrefslogtreecommitdiffstats
path: root/system/libraries
diff options
context:
space:
mode:
Diffstat (limited to 'system/libraries')
-rw-r--r--system/libraries/Router.php64
1 files changed, 29 insertions, 35 deletions
diff --git a/system/libraries/Router.php b/system/libraries/Router.php
index 06037209b..94a9a5243 100644
--- a/system/libraries/Router.php
+++ b/system/libraries/Router.php
@@ -292,7 +292,7 @@ class CI_Router {
// If the URL has a question mark then it's simplest to just
// build the URI string from the zero index of the $_GET array.
// This avoids having to deal with $_SERVER variables, which
- // can be unreliable on some servers
+ // can be unreliable in some environments
if (is_array($_GET) AND count($_GET) == 1)
{
return current(array_keys($_GET));
@@ -300,44 +300,38 @@ class CI_Router {
// Is there a PATH_INFO variable?
// Note: some servers seem to have trouble with getenv() so we'll test it two ways
- $path_info = (isset($_SERVER['PATH_INFO'])) ? $_SERVER['PATH_INFO'] : @getenv('PATH_INFO');
+ $path = (isset($_SERVER['PATH_INFO'])) ? $_SERVER['PATH_INFO'] : @getenv('PATH_INFO');
+ if ($path != '' AND $path != "/".SELF)
+ {
+ return $path;
+ }
+
+ // No PATH_INFO?... What about QUERY_STRING?
+ $path = (isset($_SERVER['QUERY_STRING'])) ? $_SERVER['QUERY_STRING'] : @getenv('QUERY_STRING');
+ if ($path != '')
+ {
+ return $path;
+ }
- if ($path_info != '' AND $path_info != "/".SELF)
+ // No QUERY_STRING?... Maybe the ORIG_PATH_INFO variable exists?
+ $path = (isset($_SERVER['ORIG_PATH_INFO'])) ? $_SERVER['ORIG_PATH_INFO'] : @getenv('ORIG_PATH_INFO');
+ if ($path != '' AND $path != "/".SELF)
{
- return $path_info;
+ return $path;
}
- else
+
+ // OK, how about REQUEST_URI?
+ // Note: REQUEST_URI is not supplied in a consistent manner with all platforms so it's
+ // a diffucult variable to use. We'll try to parse it out correctly. Hopfully one
+ // of the other variables above was available.
+ $path = $this->_parse_request_uri();
+ if ($path != "")
{
- // OK, how about REQUEST_URI?
- $req_uri = $this->_parse_request_uri();
-
- if ($req_uri != "")
- {
- return $req_uri;
- }
- else
- {
- // Hm... maybe the ORIG_PATH_INFO variable exists?
- $path_info = (isset($_SERVER['ORIG_PATH_INFO'])) ? $_SERVER['ORIG_PATH_INFO'] : @getenv('ORIG_PATH_INFO');
- if ($path_info != '' AND $path_info != "/".SELF)
- {
- return $path_info;
- }
- else
- {
- // At this point we've exhauseted all our options.
- // Hopefully QUERY_STRING exists. If not, there's nothing else we can try.
- $query_string = (isset($_SERVER['QUERY_STRING'])) ? $_SERVER['QUERY_STRING'] : @getenv('QUERY_STRING');
-
- if ($query_string != '')
- {
- return $query_string;
- }
-
- return '';
- }
- }
+ return $path;
}
+
+ // We've exhausted all our options...
+ return '';
}
else
{
@@ -373,7 +367,7 @@ class CI_Router {
$request_uri = preg_replace("|/(.*)|", "\\1", str_replace("\\", "/", $_SERVER['REQUEST_URI']));
- if ($request_uri == '' OR $request_uri == $this->config->item('index_page'))
+ if ($request_uri == '' OR $request_uri == SELF)
{
return '';
}