改进Request类的host方法 支持仅仅获取host而不包含端口号

This commit is contained in:
thinkphp
2018-04-27 17:13:25 +08:00
parent f4301c8667
commit 4c046575b6
3 changed files with 9 additions and 5 deletions

View File

@@ -1342,14 +1342,18 @@ class Request
/** /**
* 当前请求的host * 当前请求的host
* @access public * @access public
* @param bool $strict true 仅仅获取HOST
* @return string * @return string
*/ */
public function host() public function host($strict = false)
{ {
if (isset($_SERVER['HTTP_X_REAL_HOST'])) { if (isset($_SERVER['HTTP_X_REAL_HOST'])) {
return $_SERVER['HTTP_X_REAL_HOST']; $host = $_SERVER['HTTP_X_REAL_HOST'];
} else {
$host = $this->server('HTTP_HOST');
} }
return $this->server('HTTP_HOST');
return true === $strict ? strstr($host, ':', true) : $host;
} }
/** /**

View File

@@ -737,7 +737,7 @@ class Route
$rules = self::$rules['domain']; $rules = self::$rules['domain'];
// 开启子域名部署 支持二级和三级域名 // 开启子域名部署 支持二级和三级域名
if (!empty($rules)) { if (!empty($rules)) {
$host = $request->host(); $host = $request->host(true);
if (isset($rules[$host])) { if (isset($rules[$host])) {
// 完整域名或者IP配置 // 完整域名或者IP配置
$item = $rules[$host]; $item = $rules[$host];

View File

@@ -239,7 +239,7 @@ class Url
$rootDomain = Config::get('url_domain_root'); $rootDomain = Config::get('url_domain_root');
if (true === $domain) { if (true === $domain) {
// 自动判断域名 // 自动判断域名
$domain = Config::get('app_host') ?: $request->host(); $domain = Config::get('app_host') ?: $request->host(true);
$domains = Route::rules('domain'); $domains = Route::rules('domain');
if ($domains) { if ($domains) {