[英]$_SERVER['HTTP_HOST'] contains port number too =/
我不知道也許這是一個錯誤。
我的服務器上有2個虛擬主機。
virtualhost1.com virtualhost2.com
如果我用端口80打開virtualhost1.com(virtualhost1.com:80)
$_SERVER['HTTP_HOST']='virtualhost1.com';
但如果我打開virtualhost2.com:80
$_SERVER['HTTP_HOST']='virtualhost2.com:80'; // NOTE: with port number
我能知道為什么嗎?
$_SERVER['HTTP_HOST']
值直接來自Host:
HTTP請求標頭。 請求客戶似乎以這種方式填寫它。
我建議使用$_SERVER['SERVER_NAME']
因為它的值將從您的虛擬主機配置中設置。 但是,正如Flimm在下面指出的那樣,甚至SERVER_NAME
的可靠性仍然可以依賴於服務器配置(請查看此答案以獲取更多信息)。
以下函數總是返回沒有端口的真實主機(用戶類型主機),它幾乎可靠:
function getRealHost(){
list($realHost,)=explode(':',$_SERVER['HTTP_HOST']);
return $realHost;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.