/** * @return mixed|string * @throws Exception */ public static function getRequestUri() { if (self::$_requestUri === null) { if (isset($_SERVER['HTTP_X_REWRITE_URL'])) { // IIS self::$_requestUri = $_SERVER['HTTP_X_REWRITE_URL']; } elseif (isset($_SERVER['REQUEST_URI'])) { self::$_requestUri = $_SERVER['REQUEST_URI']; if (!empty($_SERVER['HTTP_HOST'])) { if (strpos(self::$_requestUri, $_SERVER['HTTP_HOST']) !== false) { self::$_requestUri = preg_replace('/^\\w+:\\/\\/[^\\/]+/', '', self::$_requestUri); } } else { self::$_requestUri = preg_replace('/^(http|https):\\/\\/[^\\/]+/i', '', self::$_requestUri); } } elseif (isset($_SERVER['ORIG_PATH_INFO'])) { self::$_requestUri = $_SERVER['ORIG_PATH_INFO']; if (!empty($_SERVER['QUERY_STRING'])) { self::$_requestUri .= '?' . $_SERVER['QUERY_STRING']; } } else { throw new Exception(__CLASS__ . ' is unable to determine the request URI.'); } } return self::$_requestUri; }