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'] : '');
便可。