VirtualDocumentRoot /home/httpd/%-1/%-2
Если в конфигурационном файле содержится такое выражение, то, получив запрос, в котором указан URL http://www.threeroomco.com/index.html
, Apache вернет клиенту файл /home/httpd/com/threeroomco/index.html
(если он имеется на сервере). Если вы хотите использовать в имени каталога лишь один символ из доменного имени, вам надо включить в состав конфигурационного файла запись наподобие следующей:
VirtualDocumentRoot /home/httpd/%-2.1/%0
Теперь при получении URL http://www.threeroomco.com/index.html
Apache вернет клиенту файл /home/httpd/t/www.threeroomco.com/index.html
. Переменная %-2.1
определяет первый ( .1
) символ в составе имени домена ( -2
), предшествующего имени домена верхнего уровня.
Независимо от значения директивы VirtualDocumentRoot
, вам надо задать значение Off
для директивы UseCanonicalName
.
UseCanonicalName Off
Если директива UseCanonicalName
будет иметь значение On
, устанавливаемое по умолчанию при инсталляции сервера, Apache будет использовать для обработки относительных ссылок доменное имя компьютера, на котором он выполняется. Например, если в документе index.html
содержится ссылка на Web-страницу products.html
, Apache будет стараться извлечь ее, основываясь на своем каноническом имени. При наличии виртуальных доменов такое поведение недопустимо. Если задать значение Off
директивы UseCanonicalName
, то для обработки относительных ссылок Apache будет применять имя, соответствующее виртуальному домену.
Использование
Альтернативный подход к созданию виртуальных доменов предполагает непосредственное описание каждого из них. Для этого в конфигурационном файле Apache предусмотрены две специальные директивы.
• NameVirtualHost
. Данная директива указывается в главном конфигурационном файле Apache и информирует сервер о том, что вы собираетесь использовать виртуальные узлы. В качестве значения этой директивы чаще всего указывается символ *
; при этом необходимо определять виртуальные домены для поддержки всех типов обращения к серверу. Кроме того, значением опции NameVirtualHost
может быть IP-адрес, связанный с сетевым интерфейсом; в этом случае конфигурация основного сервера применяется ко всем запросам, за исключением запросов, переданных через этот интерфейс, и запросов, соответствующих определению виртуального узла.
• . Данная директива указывает на начало блока, содержащего определение виртуального домена. Для этой директивы задаются те же значения, что и для директивы NameVirtualHost
. Признаком окончания блока служит директива . В состав блока включаются директивы, определяющие конфигурацию виртуального домена; здесь вы можете указать многие из тех директив, которые используются для настройки сервера, не поддерживающего виртуальные узлы.
В составе блока, сформированного с помощью , обычно указываются директивы ServerName
(она определяет имя, которому соответствует данный блок) и DocumentRoot
. При необходимости вы также можете настроить другие характеристики сервера, например разрешить выполнение CGI-сценариев. В качестве примера рассмотрим следующий фрагмент конфигурационного файла, который описывает два виртуальных Web-узла:
NameVirtualHost *
ServerName www.threeroomco.com
DocumentRoot /home/httpd/threeroomco/html
ScriptAlias /cgi-bin/ "/home/httpd/threeroomco/cgi-bin/"
ServerName www.pangaea.edu
DocumentRoot /home/httpd/pangaea-u/html
Если сервер настроен подобным образом, то при обращении к нему посредством имени www.threeroomco.com
он будет предоставлять клиенту статические файлы, которые находятся в каталоге /home/httpd/threeroomco/html
, или запускать на выполнение сценарии, содержащиеся в каталоге /home/httpd/threeroomco/cgi-bin
. Если же в запросе указано имя www.pangaea.edu
, то статические файлы будут извлекаться из каталога /home/httpd/pangaea-u/html
, а выполнение CGI-сценариев будет запрещено.
В отличие от VirtualDocumentRoot
, использование директивы позволяет настроить каждый виртуальный узел и размещать документы в произвольных позициях файловой системы. С другой стороны, VirtualDocumentRoot
предельно упрощает добавление новых доменов; для этого достаточно создать новый каталог. В большинстве случаев администраторы предпочитают использовать директиву , однако вы можете выбрать любой из этих способов, исходя из особенностей поставленной перед вами задачи.
Создание содержимого Web-узла
Несмотря на то что данная глава в основном посвящена особенностям настройки и выполнения Web-сервера, администратору, осуществляющему поддержку Web-сервера, необходимо представлять себе, как создаются документы, которые размещаются на Web- узле. Некоторые типы Web-страниц (точнее, средства для их динамической генерации) рассматривались в предыдущих разделах, однако основную часть данных, расположенных на Web-узлах, составляют HTML-документы. Для создания HTML-документов, а также файлов, которые могут использоваться ими (например, файлов с графическими данными), часто применяются специальные инструментальные средства. Научившись работать с этими инструментами и зная особенности интерпретации HTML-кода клиентскими программами, вы сможете без труда создать Web-узел, пригодный для просмотра с помощью наиболее популярных современных броузеров.
Читать дальше