Контейнерные директивы Apache

 

<Limit>-Ограничивает область действия внутренних директив указанными методами HTTP. Используется в основном для управления доступом и аутентификации.

 

<Limit GET POST OPTIONS>

Order deny,allow

Deny from all

Allow from 127.0.0.1 192.168

</Limit>

 

<LimitExcept>-Применяется по отношению к методам HTTР, не указанным в списке методов, в том числе к расширенным и нестандартным методам, которые не описаны в протоколе НТТР.

 

<LimitExcept GET>

Require valid-user

</LimitExcept>

 

<Directory>- Директивы внутри контейнера применяются только по отношению к данному каталогу и его подкаталогам.

 

<Directory /home/www/*>

AllowOverride All

</Directory>

 

<DirectoryMatch> – выполняет те же действия, что и <Directory>, но вместо имени каталога она принимает регулярное выражение. Например, директивы, находящиеся внутри контейнера

 

<DirectoryMatch ″^/www/dir[1-3]″>

</DirectoryMatch>

 

будут выполняться для каталогов с именами /www/dir1, /www/dir2 и /www/dir3.

 

<Files>-Аналогично <Directory>, но устанавливает соответствие для файлов. Разрешена внутри <Directory> и <Location>, что позволяет ограничить часть файловой системы, с которой работает директива.

 

<Directory /home/www/gallery>

<Files *.gif>

SetHandler /cgi-bin/process-image.cgi

</Files>

</Directory>

 

<FilesMatch> – выполняет те же действия, что и <Files>, но вместо имени файла она принимает регулярное выражение. Например, директивы, находящиеся внутри контейнера

 

<FilesMatch ″\.(doc|txt$)″>

</FilesMatch>

 

будут выполняться для файлов с расширениями txt и doc.

 

<Location>-Аналогично <Directory>, но применяется не к физической области хранения файлов, а к указателям URL. Директивы, разрешенные в <Directory>, действуют и в <Location>, хотя некоторые (например Options FollowSymLinks) логически бессмысленны и игнорируются.

 

<Location /server-info>

SetHandler server-info

</Location>

 

<LocationMatch> – выполняет те же действия, что и <Location>, но вместо URL она принимает регулярное выражение.

 

<VirtualHost>-Позволяет описывать дополнительные виртуальные хосты. У каждого из них должны быть имя, IP-адрес, журналы ошибок и доступа.

 

<VirtualHost 192.168.1.2>

ServerName www.beta.com

ServerAdmin admin@beta.com

CustomLog /logs/beta_access_log common

ErrorLog /logs/beta_error_log

DocumentRoot /home/www/beta

</VirtualHost>

 

Правила при использовании контейнеров:

· контейнер <VirtualHost> не может находиться внутри любого другого контейнера;

· контейнер <Limit>с самым узким контекстом не может содержать вложенных контейнеров;

· контейнер <Files> может содержать только контейнер <Limit>;

· контейнеры <Directory> и <Location> нельзя смешивать, то есть использовать один внутри другого.

Контейнер с более узкой областью действия перекрывает контейнер с более широко областью действия.