$ _Server ['http_host'] также содержит номер порта =/
-
12-10-2019 - |
Вопрос
Я не знаю, может быть, это ошибка.
У меня есть 2 virutalhost на моем сервере.
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
Могу я узнать почему?
Решение
Значение $_SERVER['HTTP_HOST']
взят непосредственно из Host:
HTTP -запрос заголовок. Похоже, запрашивающий клиент заполняет его таким образом.
Я предлагаю использовать $_SERVER['SERVER_NAME']
Вместо этого его значение будет установлено из вашей конфигурации виртуального хоста. Однако, как отмечает Флимм ниже, даже надежность SERVER_NAME
все еще может зависеть от конфигурации сервера (проверьте этот ответ Для получения дополнительной информации об этом).
Другие советы
Следующая функция всегда возвращает настоящий хост (пользовательский хост) без порта, и она почти надежна:
function getRealHost(){
list($realHost,)=explode(':',$_SERVER['HTTP_HOST']);
return $realHost;
}