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

时间:2017-11-02 06:55:39

标签: php httprequest uri psr-7

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

请您告诉我应该选择哪个值 - 最可靠的值?

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

http://local.mvc/mycontroller/myaction

$_SERVER数组将具有:

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

我需要获取值local.mvc

感谢您的时间。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

$_SERVER变量有'REQUEST_URI'

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

答案 2 :(得分:0)

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

获取主机名:

php_uname("n");