如何从 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");
对于路由器,我想根据服务器请求从 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");