Контейнерные директивы 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 [email protected]
CustomLog /logs/beta_access_log common
ErrorLog /logs/beta_error_log
DocumentRoot /home/www/beta
</VirtualHost>
Правила при использовании контейнеров:
· контейнер <VirtualHost> не может находиться внутри любого другого контейнера;
· контейнер <Limit>с самым узким контекстом не может содержать вложенных контейнеров;
· контейнер <Files> может содержать только контейнер <Limit>;
· контейнеры <Directory> и <Location> нельзя смешивать, то есть использовать один внутри другого.
Контейнер с более узкой областью действия перекрывает контейнер с более широко областью действия.