PHP中$_SERVER['SERVER_NAME']与$_SERVER['HTTP_HOST']异同

相同时满足以下三个条件:
1.服务器端口默认80
2.apache或nginx中ServerName设置正确
3.HTTP/1.1协议规范

不同点:
$_SERVER["HTTP_HOST"] 在HTTP/1.1协议规范下,会根据客户端的HTTP请求输出信息
$_SERVER["SERVER_NAME"] 默认情况下直接输出apache的配置文件httpd.conf中的ServerName值。

当端口不为80时
$_SERVER["HTTP_HOST"] 会输出端口号,例如:mimiz.cn:8080
$_SERVER["SERVER_NAME"] 只会直接输出ServerName值

因此在这种情况下,可以理解为:HTTP_HOST = SERVER_NAME : SERVER_PORT


当配置文件httpd.conf中的ServerName与HTTP/1.0请求的域名不一致时:
httpd.conf配置如下:
<virtualhost *>
ServerName mimiz.cn
ServerAlias www.mimiz.cn
</virtualhost>
客户端访问域名www.mimiz.cn
_SERVER["HTTP_HOST"] 输出 www.mimiz.cn
_SERVER["SERVER_NAME"] 输出 mimiz.cn



所以,应尽量使用$_SERVER["HTTP_HOST"],保险,可靠!



你可能感兴趣的:(服务器,保险)