Apache. Документация на русском


Директивы Apache
  1    2    3    4    5    6    7    8    9    10    11    12    13    14    15    16    17    18    19    20    21    22    23    24    25    26    27    28    29    30    31    32    33    34    35    36    37    38    39    40    41    42    43    44    45    46    47    48      49      50    51    52    53    54    55    56    57    58    59    60    61    62    63    64    65    66    67    68    69    70    71    72    73    74    75    76    77    78    79    80    81    82    83    84    85  
  86    87    88    89    90    91    92  
  93    94    95    96    97    98    99    100    101    102    103    104    105    106    107    108    109    110    111    112    113    114    115    116    117    118    119    120    121    122    123    124    125    126    127    128    129    130    131    132    133    134    135    136    137    138    139    140    141    142    143    144    145    146    147    148    149    150    151    152    153    154    155    156    157    158    159    160    161    162    163    164    165  
  166    167    168    169    170    171    172    173    174    175    176    177    178    179    180    181    182    183    184    185    186    187    188    189    190    191    192    193    194    195    196    197    198    199    200    201    202    203    204    205    206    207    208    209    210    211    212    213    214    215    216    217    218    219    220    221    222    223    224    225    226    227    228    229    230    231    232    233    234    235    236    237    238    239    240    241    242  

 <         > 
Список директив: Core  |  ModRewrite  |  Lua  |  Proxy  |  SSL

Директива Location
  RU            EN  

Description:Applies the enclosed directives only to matching URLs
Syntax: <Location URL-path|URL> ... </Location>
Context:server config, virtual host
Status:Core
Module:core

Описание: Применяет прилагаемые директивы только к совпадающим URL


Директива <Location> ограничивает область применения вложенных директив URL-адресом. Он похож на <Directory> директиву и начинает подраздел, который заканчивается директивой </Location> . <Location> секции обрабатываются в порядке их появления в конфигурационном файле, после чтения <Directory> секций и файлов и после секций. .htaccess <Files>

<Location> разделы работают полностью вне файловой системы. Это имеет несколько последствий. Самое главное, <Location> директивы не должны использоваться для управления доступом к расположениям файловой системы. Поскольку несколько разных URL-адресов могут сопоставляться с одним и тем же расположением в файловой системе, такой контроль доступа можно обойти.

Прилагаемые директивы будут применяться к запросу, если компонент пути URL-адреса соответствует любому из следующих критериев:

  • Указанное местоположение точно соответствует компоненту пути URL-адреса.
  • Указанное местоположение, оканчивающееся косой чертой, является префиксом компонента пути URL-адреса (рассматривается как корень контекста).
  • Указанное местоположение с добавлением завершающей косой черты является префиксом компонента пути URL-адреса (также рассматривается как корень контекста).

В приведенном ниже примере, где косая черта в конце не используется, к запросам к /private1, /private1/ и /private1/file.txt будут применены вложенные директивы, а к /private1other — нет.

<Location "/private1">
 # ...
</Location>

В приведенном ниже примере, где используется завершающая косая черта, к запросам к /private2/ и /private2/file.txt будут применены вложенные директивы, а к /private2 и /private2other — нет.

<Location "/private2/">
 # ...
</Location>

Когда использовать <Location>

Используйте <Location> для применения директив к содержимому, находящемуся вне файловой системы. Для содержимого, находящегося в файловой системе, используйте <Directory> и <Files> . Исключением является <Location "/"> , который представляет собой простой способ применить конфигурацию ко всему серверу.

Для всех исходных (не прокси) запросов сопоставляемый URL-адрес представляет собой URL-путь в форме /path/ . Нельзя включать схему, имя хоста, порт или строку запроса. Для прокси-запросов сопоставляемый URL-адрес имеет форму scheme://servername/path , и вы должны включать префикс.

URL-адрес может использовать подстановочные знаки. В строке с подстановочными знаками ? соответствует любому одиночному символу и * соответствует любой последовательности символов. Ни один подстановочный знак не соответствует / в URL-пути.

Также можно использовать регулярные выражения с добавлением символа ~ . Например:

<Location ~ "/(extra|special)/data">
 #...
</Location>

будет соответствовать URL-адресам, содержащим подстроку /extra/data или /special/data . Директива <LocationMatch> ведет себя так же, как версия регулярного выражения <Location> , и предпочтительнее по той простой причине, что ~ ее трудно отличить - во многих шрифтах.

Функциональность <Location> особенно полезна в сочетании с директивой SetHandler . Например, чтобы включить запросы статуса, но разрешить их только из браузеров в example.com , вы можете использовать:

<Location "/status">
 SetHandler server-status
 Require host example.com
</Location>

Примечание о / (косая черта)

Символ косой черты имеет особое значение в зависимости от того, где в URL-адресе он появляется. Люди могут привыкнуть к его поведению в файловой системе, где несколько смежных косых черт часто сворачиваются в одну косую черту ( т.е. /home///foo это то же самое , что и /home/foo ). В URL-пространстве это не обязательно верно. Директива <LocationMatch> и версия регулярного выражения <Location> требуют, чтобы вы явно указали несколько косых черт, если это ваше намерение.

Например, <LocationMatch "^/abc"> будет соответствовать URL-адресу запроса /abc , но не URL-адресу запроса //abc . Директива (non-regex) <Location> ведет себя аналогично при использовании для прокси-запросов. Но когда (non-regex) <Location> используется для запросов без прокси, он будет неявно сопоставлять несколько косых черт с одной косой чертой. Например, если вы укажете <Location "/abc/def"> и запрос будет, /abc//def то он будет соответствовать.

Смотрите также

  • Как работают разделы <Directory>, <Location> и <Files> для объяснения того, как эти разные разделы объединяются при получении запроса.
  • LocationMatch
  RU            EN  


Рейтинг@Mail.ru