【SERVER_NAME】PHP中的SERVER_NAME【原创】

今天碰到一个bug,做接口的时候,返回活动的链接,以前用的是:
1
$_SERVER['SERVER_NAME'] .'/index.php/xxxxx' 
结果发现前面的域名是错误的。

查文档发现$_SERVER['SERVER_NAME']输出的是apache或者是nginx里面配置文件定义的SERVER_NAME
比如apache的配置文件httpd.conf:
1
<virtualhost *>
2
ServerName baidu.cn
3
ServerAlias www.baidu.cn
4
</virtualhost>
那么上面的链接输出的是baidu.cn/index.php/xxxx

这和预想的域名是不一样的,域名是应该和请求的域名是一致的,后来改成用$_SERVER['HTTP_HOST']即可。

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

所以,在实际程序中,应尽量使用_SERVER["HTTP_HOST"] ,比较保险和可靠。
posted @ 2017-07-14 22:11  Newman·Li  阅读(720)  评论(0编辑  收藏  举报