PHP中的$_SERVER['HTTP_HOST']与$_SERVER['SERVER_NAME']的区别
通过:$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']可以获取域名及请求的URL。
1、变量HTTP_HOST和SERVER_NAME都是获取当前域名
2、当满足以下3个条件的时候,两者会输出相同的信息
A、服务器端口号为80
B、Apache中的conf中的ServerName设置正确
C、HTTP/1.1协议规范
3、不同点
A、$_SERVER['HTTP_HOST']:在HTTP/1.1协议下,会根据客户端的HTTP请求输出信息;
$_SERVER['SERVER_NAME']:默认情况下会直接输出Apache的配置文件httpd.conf中的ServerName的值
B、当服务器的端口号不是80时
$_SERVER['HTTP_HOST']会输出端口号,例如“www.funwall.cn:8080”
$_SERVER['SERVER_NAME']直接输出ServerName的值,例如“www.funwall.cn”
在这种情况下,可以理解成HTTP_HOST=SERVER_NAME:SERVRE_PORT
C、当配置文件httpd.conf中的ServerName与HTTP/1.0下的域名不一致的时候,假如httpd.conf配置如下:
<virtualhost*>
ServerNamefunwall.cn
ServerAliaswww.funwall.cn
</virtualhost>
客户端访问域名:www.funwall.cn
$_SERVER[HTTP_HOST]输出:www.funwall.cn
$_SERVER[SERVER_NAME]输出:funwall.cn
因此,在实际中应该用$_SERVER[HTTP_HOST]获取域名比较保险