HTTP_HOST vs. SERVER_NAME

izbushka
На сайте с 08.06.2007
Offline
110
2558

Apache 2.2.21 с mod_php

nginx 1.1.13 как фронтэнд

Конфиг апача:

ServerName domain.com

ServerAlias domain.ru

Тестовый скрипт:

<?php 

echo "SERVER_NAME: {$_SERVER 'SERVER_NAME'}<br>";
echo "HTTP_HOST: {$_SERVER 'HTTP_HOST'}";
?>

p.s. квадратные скобки форум не дает вставить, поэтому их пропустил ($_SERVER 'SERVER_NAME')

Обращаемся к domain.com:

SERVER_NAME: domain.com

HTTP_HOST: domain.com

Обращаемся к domain.ru:

SERVER_NAME: domain.ru

HTTP_HOST: domain.ru

Вопрос: почему SERVER_NAME не равно ServerName апача во втором случае? Ведь должно ж..

M
На сайте с 16.09.2009
Offline
278
#1
izbushka:
Ведь должно ж..

Это "здравый смысл" в вашей голове, или вы способны обосновать это "должно"?

Читаем документацию (стандарт):

The SERVER_NAME variable MUST be set to the name of the server host
to which the client request is directed.

HTTP_HOST - это то что он прислал в запросе.

Сервер никуда нас не редиректил - вот и отдается то, что клиент прислал в запросе. Читайте доки про директиву UseCanonicalName.

Абонементное сопровождение серверов (Debian) Отправить личное сообщение (), написать письмо ().
izbushka
На сайте с 08.06.2007
Offline
110
#2

Все понятно, спасибо.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий