如何从 PHP 中的请求 URI 中读取主机名?

How to read the host name from a request URI in PHP?

对于路由器,我想根据服务器请求从 URI 中获取主机名。我知道我需要从 $_SERVER 变量中读取它。但似乎在 $_SERVER 数组中有多个主机名条目(至少两个)。

能否请您告诉我应该选择哪个值来读取 - 最可靠的值?

例如,当我有这样的 URI 时:

http://local.mvc/mycontroller/myaction

$_SERVER 数组将有:

[HTTP_HOST] => local.mvc
[SERVER_NAME] => local.mvc

我需要获取值local.mvc

感谢您的宝贵时间。

SERVER_NAME 是在其配置中分配给给定服务器的名称(即 apache.conf 文件及其 ServerName 指令或其他软件的类似名称),而 HTTP_HOST 值是从来自客户端(通常是网络浏览器)的 headers of HTTP request 获得的。如果您的服务器服务于多个域(如共享服务器/虚拟服务器托管),这两个 可能 不同。根据用例,您可能想要使用其中任何一种,但是 HTTP_HOST 似乎是更好的选择,因为它总是告诉用户想要达到的目标。

$_SERVER 变量有 'REQUEST_URI'

只是 var_dump 服务器变量,应该在那里(或查看 documentation

如果您使用的是 PHP5 或 PHP7,请尝试 php_uname

获取主机名:

php_uname("n");