uchome的index文件中的二级域名功能判断,使用了php的$_SERVER['HTTP_HOST'],开始对这个不是很了解,因此百度了一下,发现一篇帖子有点意思,转发过来作个记录。php
在php中,咱们通常经过$_SERVER['HTTP_HOST']来活得URL中网站的域名或者ip地址。php框架
|
通常来讲,这样子不会遇到什么问题,在一些常见的php框架中,如PFC3和FLEA也是基于该预约义变量。框架
然而最近在作的一个项目,程序移交到客户手里测试时,居然发现程序的跳转老是会出错。测试
最后找出缘由:$_SERVER['HTTP_HOST']在客户的环境里,取得的值老是程序所在的服务器在其局域网内的ip值。网站
究其缘由,是由于,客户的公司经过一台服务器链接至因特网,而咱们的程序所在的服务器,是经过域名映射出来的,也就是中间有个“代理”的过程。所以$_SERVER['HTTP_HOST']在这样的环境里,取得的值老是程序所在的服务器在其局域网内的ip值。spa
最后查了很多资料,在symfony框架里面,找到替代的实现方法:代理
将$host = $_SERVER['HTTP_HOST'];code
替换成:symfony
$host = isset($_SERVER['HTTP_X_FORWARDED_HOST']) ? $_SERVER['HTTP_X_FORWARDED_HOST'] : (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '');
便可。