PHP: переменные $ _SERVER: $ _SERVER vs $ _SERVER

Возможный дубликат:
HTTP_HOST и SERVER_NAME

В чем разница между $_SERVER['HTTP_HOST'] и $_SERVER['SERVER_NAME'] ?

$_SERVER['SERVER_NAME'] указывает значение имени сервера, как определено в конфигурации хоста (например, для файла Apache Apache .conf).

$_SERVER['HTTP_HOST'] дает вам доменное имя, через которое выполняется текущий запрос, и имеет более непосредственное отношение к запросу.

HTTP_HOST обычно более полезен в большинстве приложений, поскольку он напрямую относится к запросу, тогда как SERVER_NAME может возвращать любое значение в файле conf и вообще ничего не сообщает о запросе.

Я приведу вам пример того, как HTTP_HOST может отличаться от SERVER_NAME . Предположим, что у вас есть хост, определенный в Apache с именем domain.com и IP-адресом 1.2.3.4 .

Давайте посмотрим на два URL-адреса входящих запросов и покажем разницу между этими переменными:

 http://www.domain.com HTTP_HOST = www.domain.com SERVER_NAME = domain.com http://1.2.3.4 HTTP_HOST = 1.2.3.4 SERVER_NAME = domain.com 

Таким образом, HTTP_HOST больше привязан к запросу, тогда как SERVER_NAME определяется конфигурацией сервера.

HTTP_HOST – это заголовок Host: отправленный клиентом. В результате это может быть немного менее надежным. SERVER_NAME определяется конфигурацией вашего сервера , независимо от ввода пользователя.

Разница в поведении тонкая. Здесь показаны несколько хороших примеров: http://shiflett.org/blog/2006/mar/server-name-versus-http-host

Документы объясняют это хорошо

'SERVER_NAME' Имя хоста сервера, под которым выполняется текущий скрипт. Если скрипт запущен на виртуальном хосте, это будет значение, определенное для этого виртуального хоста.

'HTTP_HOST' Содержимое заголовка Host: из текущего запроса, если таковой имеется.

HTTP_HOST

Содержимое заголовка Host: из текущего запроса, если таковой имеется.

SERVER_NAME

Имя хоста сервера, под которым выполняется текущий скрипт. Если скрипт запущен на виртуальном хосте, это будет значение, определенное для этого виртуального хоста.

http://php.net/manual/en/reserved.variables.server.php