Example #1
0
 /**
  * @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;
 }