$ _SERVER ['HTTP_HOST']也包含端口号= /

dyn*_*mic 10 php virtual-hosts port-number superglobals

我不知道也许这是一个错误.

我的服务器上有2个虚拟主机.

virtualhost1.com virtualhost2.com

如果我用端口80打开virtualhost1.com(virtualhost1.com:80)

$_SERVER['HTTP_HOST']='virtualhost1.com';
Run Code Online (Sandbox Code Playgroud)

但如果我打开virtualhost2.com:80

$_SERVER['HTTP_HOST']='virtualhost2.com:80'; // NOTE: with port number
Run Code Online (Sandbox Code Playgroud)

我能知道为什么吗?

web*_*ave 18

$_SERVER['HTTP_HOST']直接取自Host:HTTP请求标头.请求客户似乎以这种方式填写它.

我建议使用,$_SERVER['SERVER_NAME']因为它的值将从您的虚拟主机配置中设置.但是,正如Flimm在下面指出的那样,即使可靠性SERVER_NAME仍然可以依赖于服务器配置(请查看此答案以获取更多信息).