改进Request类baseUrl和basePath方法

This commit is contained in:
thinkphp
2016-05-19 18:42:20 +08:00
parent 5ba8795e7d
commit 40d4bfe4da

View File

@@ -234,10 +234,20 @@ class Request
} elseif ($this->basePath) { } elseif ($this->basePath) {
return $this->basePath; return $this->basePath;
} else { } else {
$url = $this->scheme() . '://' . $this->host(); $script_name = basename($_SERVER['SCRIPT_FILENAME']);
$url .= rtrim($_SERVER['SCRIPT_NAME'], '/'); if (basename($_SERVER['SCRIPT_NAME']) === $script_name) {
$this->basePath = $url; $url = $_SERVER['SCRIPT_NAME'];
return $url; } elseif (basename($_SERVER['PHP_SELF']) === $script_name) {
$url = $_SERVER['PHP_SELF'];
} elseif (isset($_SERVER['ORIG_SCRIPT_NAME']) && basename($_SERVER['ORIG_SCRIPT_NAME']) === $script_name) {
$url = $_SERVER['ORIG_SCRIPT_NAME'];
} elseif (($pos = strpos($_SERVER['PHP_SELF'], '/' . $script_name)) !== false) {
$url = substr($_SERVER['SCRIPT_NAME'], 0, $pos) . '/' . $script_name;
} elseif (isset($_SERVER['DOCUMENT_ROOT']) && strpos($_SERVER['SCRIPT_FILENAME'], $_SERVER['DOCUMENT_ROOT']) === 0) {
$url = str_replace('\\', '/', str_replace($_SERVER['DOCUMENT_ROOT'], '', $_SERVER['SCRIPT_FILENAME']));
}
$this->basePath = $this->scheme() . '://' . $this->host() . $url;
return $this->basePath;
} }
} }
@@ -254,8 +264,7 @@ class Request
} elseif ($this->root) { } elseif ($this->root) {
return $this->root; return $this->root;
} else { } else {
$_root = rtrim(dirname($this->baseUrl()), '/'); $this->root = rtrim(str_replace('\\', '/', dirname($this->basePath())), '/');
$this->root = ('/' == $_root || '\\' == $_root) ? '' : $_root;
return $this->root; return $this->root;
} }
} }