今天碰到一个bug,做接口的时候,返回活动的链接,以前用的是:
1
$_SERVER['SERVER_NAME'] .'/index.php/xxxxx'
结果发现前面的域名是错误的。
查文档发现$_SERVER['SERVER_NAME']输出的是apache或者是nginx里面配置文件定义的SERVER_NAME
比如apache的配置文件httpd.conf:
1
2
ServerName baidu.cn
3
ServerAlias www.baidu.cn
4
那么上面的链接输出的是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"] ,比较保险和可靠。