$server_url = $_SERVER['SERVER_NAME']?"http://".$_SERVER['SERVER_NAME']:"http://".$_SERVER['HTTP_HOST'];
$_SERVER['HTTP_HOST']和$_SERVER['SERVER_NAME']的區別
1.通常情況:
$_SERVER[“HTTP_HOST”] 在HTTP/1.1協議規范下,會根據客戶端的HTTP請求輸出信息。
$_SERVER[“SERVER_NAME”] 默認情況下直接輸出apache的配置文件httpd.conf中的ServerName值。
2.當服務器為非80端口時:
$_SERVER[“HTTP_HOST”] 會輸出端口號,例如:mimiz.cn:8080
$_SERVER[“SERVER_NAME”] 會直接輸出ServerName值
因此在這種情況下,可以理解為:HTTP_HOST = SERVER_NAME : SERVER_PORT
在實際應用中,應盡量使用$_SERVER['HTTP_HOST'] ,比較保險和可靠
最近做的一個項目,當項目放到客戶手里測試的時候,發現程序的跳轉總是出錯。
原因是:客戶的公司是通過一台服務器連接到因特網,而我們程序所在的服務器,是通過域名映射過來的,也就是說中間有個“代理”的過程,
因此$_SERVER['HTTP_HOST']在這樣的環境里,取得的值總是程序所在的服務器在其局域網內的ip值。