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

标签 php virtual-hosts superglobals port-number

我不知道这可能是一个错误。

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

virtualhost1.com virtualhost2.com

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

$_SERVER['HTTP_HOST']='virtualhost1.com';

但是如果我打开 virtualhost2.com:80

$_SERVER['HTTP_HOST']='virtualhost2.com:80'; // NOTE: with port number

我能知道为什么吗?

最佳答案

$_SERVER['HTTP_HOST'] 的值直接取自 Host: HTTP 请求 header 。看起来请求客户正在以这种方式填写它。

我建议使用 $_SERVER['SERVER_NAME'] 因为它的值将从您的虚拟主机配置中设置。然而,正如 Flimm 在下面指出的那样,即使 SERVER_NAME 的可靠性仍然取决于服务器配置(查看 this answer 了解更多信息)。

关于php - $_SERVER ['HTTP_HOST' ] 也包含端口号 =/,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4504831/

相关文章:

php - PHP OpenSSL 可以生成私钥/公钥/证书对吗?

php - OneToMany 关系中的 Doctrine2 查询错误

php - 如何在 PHP 中通过一个具有不同条件的 SQL 查询更新多行?

php - Web 服务器变量 $_SERVER ['REMOTE_ADDR' ] 可靠吗?

php - '$_SERVER[' UNIQUE_ID']中的值是做什么用的?

php - 超全局$_GET中键值对的顺序有保证吗?

php - Windows 上的 FFmpeg - 后台转换

apache - 通过子域的动态颠覆 repo (在 Apache 中)

ubuntu - apache2:在本地服务器的同一域下托管多个站点

apache - 具有 Apache 多个 VirtualHosts 的 Golang webapp