通常情况下返回值一致

如果网站为1.cn,通常情况下$SERVER[‘HTTP_HOST’]与$SERVER[‘SERVER_NAME’]均返回同样结果:1.cn

先给出结论:

当满足以下3个条件的时候,两者会输出相同的信息

A、服务器端口号为80

B、Apache中的conf中的ServerName设置正确

C、HTTP/1.1协议规范

端口号不同,返回值不一样

假如1个网站在8080端口,1个网站在80端口,返回值:

$_SERVER[‘HTTP_HOST’]会输出端口号,例如“1.cn:8080”

$_SERVER[‘SERVER_NAME’]直接输出ServerName的值,例如“1.cn”

服务器有别名则不同

假如服务器有别名,例如:

        <virtualhost *>

                ServerName funwall.cn

                ServerAlias www.funwall.cn

      </virtualhost>

客户端访问域名:www.funwall.cn

$_SERVER[HTTP_HOST]输出:www.funwall.cn

$_SERVER[SERVER_NAME]输出:funwall.cn (!注意:这里显示的是服务器真实域名而非域名别名)

总结:在实际中应该用$_SERVER[HTTP_HOST]获取域名比较保险

作者 申佳明

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注