$ SERVER ['HTTP HOST'] также содержит номер порта =/
Я не знаю, может, это ошибка.
у меня есть 2 virutalhosts на моем сервере.
virtualhost1.com virtualhost2.com
Если я открою virtualhost1.com с портом 80 (virtualhost1.com: 80)
$_SERVER['HTTP_HOST']='virtualhost1.com';
но если я открою virtualhost2.com: 80
$_SERVER['HTTP_HOST']='virtualhost2.com:80'; // NOTE: with port number
могу я знать почему?
2 ответов
значение $_SERVER['HTTP_HOST']
с Host:
заголовок HTTP-запроса. Похоже, что запрашивающий клиент заполняет его таким образом.
Я предлагаю использовать $_SERVER['SERVER_NAME']
вместо этого его значение будет установлено из конфигурации виртуального хоста. Однако, как отмечает Flimm ниже, даже надежность SERVER_NAME
все еще может зависеть от конфигурации сервера (проверьте ответ для получения дополнительной информации об этом).
следующая функция всегда возвращает реальный хост (типизированный пользователем хост) без порта, и это почти надежно:
function getRealHost(){
list($realHost,)=explode(':',$_SERVER['HTTP_HOST']);
return $realHost;
}