public static function getBaseUri() { if (self::$_Baseuri) { return self::$_Baseuri; } $filename = basename($_SERVER['SCRIPT_FILENAME']); if (basename($_SERVER['SCRIPT_NAME']) === $filename) { $url = $_SERVER['SCRIPT_NAME']; } elseif (basename($_SERVER['PHP_SELF']) === $filename) { $url = $_SERVER['PHP_SELF']; } elseif (isset($_SERVER['ORIG_SCRIPT_NAME']) && basename($_SERVER['ORIG_SCRIPT_NAME']) === $filename) { $url = $_SERVER['ORIG_SCRIPT_NAME']; } else { $path = $_SERVER['PHP_SELF']; $segs = explode('/', trim($_SERVER['SCRIPT_FILENAME'], '/')); $segs = array_reverse($segs); $index = 0; $last = count($segs); $url = ''; do { $seg = $segs[$index]; $url = '/' . $seg . $url; ++$index; } while ($last > $index && false !== ($pos = strpos($path, $url)) && 0 != $pos); } $request = self::getRequestUri(); if (0 === strpos($request, dirname($url))) { self::$_Baseuri = rtrim(dirname($url), '/') . '/'; } elseif (!strpos($request, basename($url))) { return ''; } else { if (strlen($request) >= strlen($url) && (false !== ($pos = strpos($request, $url)) && $pos !== 0)) { $url = substr($request, 0, $pos + strlen($url)); } self::$_Baseuri = self::setHtmlChars(rtrim($url, '/') . '/'); } return self::$_Baseuri; }