记录一次php获取当前域名的bug
问题:在做访问静态资源的时候,采用域名访问。又做了服务器负载防护。域名访问的时候,转发导致样式丢失
以example.com为例。在配置nginx的时候,配置了两个域名
server_name www.example.com example.com;
代码里面使用了$_SERVER["SERVER_NAME"]来获取当前域名,访问example.com的时候,拿到的却是www.example.com的域名,导致样式全丢
查了一下,由于刚开始只做了一个example.com的防护转发,并没有www.example.com的存在,所以转发的时候,显示的又是www的域名,才会导致的样式丢失。
解决问题:
1、把www的访问也做了,保证server_name下面的所有域名都可以访问
2、把$_SERVER["SERVER_NAME"]换成$_SERVER['HTTP_HOST']
查了一下资料
$_SERVER["HTTP_HOST"] 会根据客户端的HTTP请求输出信息
$_SERVER["SERVER_NAME"] 会直接拿vhost配置文件的ServerName值,如果是多个,会默认拿第一个
以后开发尽量使用_SERVER["HTTP_HOST"] 来获取当前域名