2. vhost
Они могут указывать на весь сервер или на его часть -- подкаталоги.
Рассмотрим первый тип - 'path'. Предположим, что есть основной сервер
www.host.ru. Нам нужно создать синоним www.newhost.ru , который должен
указывать на www.host.ru/new/. Нужный тип синонима - 'path'.
Запрос пользователя www.newhost.ru будет преобразован в www.host.ru/new/, и
в таком виде он будет направлен к Вашему серверу. Соответственно, значение
переменной окружения HTTP_HOST при обращении к синониму соответствует
имени родительского сервера, то есть, в нашем случае это будет www.host.ru.
Иными словами, на родительском сервере www.host.ru невозможно отличить
запрос к синониму http://www.newhost.ru от запроса к основному серверу с
указанием каталога http://www.host.ru/new/
Синонимы типа vhost
Использование синонимов типа 'vhost' доступно для тарифов
"Стандартный",
"Активный",
"Максимальный" и
"МаксимальныйПлюс".
На тарифах
"Стандартный" и
"Активный"
синоним типа 'vhost' очень похож на синоним
типа 'path'. Отличие по сути только одно: значение переменной окружения
HTTP_HOST при обращении к синониму типа 'vhost' соответствует тому имени, к
которому происходит обращение, что позволяет пользователям в своих скриптах
определять, по какому имени посетители запрашивают страницы сайта. Если,
например, http://www.newhost.ru является синонимом для
http://www.host.ru/new/, то при обращении к http://www.newhost.ru в
HTTP_HOST будет "www.newhost.ru", при обращении к http://www.host.ru/new/ -
соответственно, "www.host.ru".
Обратите внимание, что обращения к http://www.domain и http://domain не
разделяются. Например, и при обращении к http://www.newhost.ru, и к
http://newhost.ru в HTTP_HOST будет "www.newhost.ru".
Вы можете
самостоятельно выбирать тип синонима между 'path' и 'vhost'. Зайдите на
Сервер Статистики под управляющим логином, выберите соответствующую услугу
("Synonym", "Alias", "SubDomain"), а затем - ссылку "Управление услугой".
Мы рекомендуем использовать синонимы типа 'vhost'.
На тарифах
"Максимальный" и
"МаксимальныйПлюс"
с помощью синонимов типа 'vhost' можно создавать
полноценные www-серверы. Об этой возможности можно прочитать ниже.
Однако мы советуем использовать для этих целей услугу
"Дополнительный web-сервер", который
работает независимо от основного.
Особенность trailing slash redirect
Здесь может быть особый случай, когда пользователь набирает в браузере
http://newhost.ru/dir и попадает на http://host.ru/new/dir/, тем
самым "обнаруживая" родительский сервер. Это особенность работы
сервера Apache, называемая trailing slash
redirect - если в конце адреса не был указан символ '/' (slash), то
apache сделает "переадресацию" (external redirect) на основное имя сервера.
Если по какой-либо причине это нежелательно, то при помощи использования
модуля mod_rewrite можно изменить его на нужный редирект. Для этого в
каталоге основного сервера, куда указывает www-alias newhost.ru, создается
файл
.htaccess следующего содержанием:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_URI} !^/new$
RewriteRule ^(.+[^/])$ http://newhost.ru/$1/ [R]
RewriteBase /new/
Использование синонима типа 'vhost' на тарифах "Максимальный" и "МаксимальныйПлюс"
На тарифах "Максимальный" и "МаксимальныйПлюс", используя синонимы типа 'vhost', можно создавать
полноценные www-серверы. Это потребует внесения некоторых изменений в файл
конфигурации веб-сервера Apache httpd.conf, что подразумевает наличие
базовых знаний по управлению сервером Apache и некоторых навыков работы в
unix-shell. Если Вы являетесь владельцем сервера, работающего по тарифу
"Максимальный" или "МаксимальныйПлюс", Вы можете самостоятельно выбирать тип синонима между 'path'
и 'vhost'. Зайдите на Сервер Статистики под Управляющим логином, выберите
соответствующую услугу ("Synonym", "Alias", "SubDomain"), а затем - ссылку
"Управление услугой".
Предположим, что есть основной сервер www.host.ru, расположенный в каталоге
/bhome/part2/01/host/www/ . Нам нужно создать алиас newhost.ru , который
должен указывать на каталог /bhome/part2/01/host/new/, тип синонима -
'vhost'. При этом для сервера и для его алиаса создадим свои каталоги для
исполнения www-скриптов: соответственно, host.ru --
/bhome/part2/01/host/vcgi/ , а newhost.ru --
/bhome/part2/01/host/newvcgi/ .
Дописываем/исправляем в файле httpd.conf следующее:
# эта строка обязательно должна присутствовать
NameVirtualHost *
# сначала определим родительский сервер как virthost
<VirtualHost *>
ServerName www.host.ru
ServerAlias host.ru
DocumentRoot /bhome/part2/01/host/www/
<Directory /bhome/part2/01/host/www>
Options Indexes FollowSymLinks +Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
DirectoryIndex index.htm index.html index.php index.shtml
AccessFileName .htaccess
# определяем каталог для исполняемых скриптов
ScriptAlias /cgi-bin/ /bhome/part2/01/host/vcgi/
<Directory /bhome/part2/01/host/vcgi>
AllowOverride None
Options ExecCGI FollowSymLinks
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
# определяем синоним(ы)
<VirtualHost *>
ServerName www.newhost.ru
ServerAlias newhost.ru
DocumentRoot /bhome/part2/01/host/new/
<Directory /bhome/part2/01/host/new>
Options Indexes FollowSymLinks +Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
DirectoryIndex index.htm index.html index.php index.shtml
AccessFileName .htaccess
# определяем каталог для исполняемых скриптов
ScriptAlias /cgi-bin/ /bhome/part2/01/host/newvcgi/
<Directory /bhome/part2/01/host/newvcgi>
AllowOverride None
Options ExecCGI FollowSymLinks
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Обратите внимание: должны быть описаны как родительский сервер, так
и синоним.
Кроме того, синонимы типа 'vhost' обладают еще одной особенностью: значение
"DocumentRoot", заданное в конфигурационном файле веб-сервера, и параметр
"Путь", указанный на сервере статистики в разделе "Управление услугой",
"складываются". То есть при использовании описанной выше конфигурации, если
указать "Путь" - "test", то обращения к www.newhost.ru будут попадать в
/bhome/part2/01/host/new/test. Именно поэтому для синонимов типа 'vhost'
значение "Путь" следует оставлять пустым.
Можно также добавлять различные директивы внутрь соответствующих секций. К
примеру, можно задать отдельный лог для ошибок и т.п.