Почему в моем конфигурационном файле Apache2 нет <location>
?
$ sudo nano /etc/apache2/apache2.conf
Я могу найти <Directory />
следующим образом:
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
Но я не могу найти вообще , Я пытаюсь разрешить OPTIONS DELETE PUT методы следующим образом:
<Location "/">
AllowMethods GET POST OPTIONS DELETE PUT
Require all granted
</Location>
Моя версия Apache:
$ apache2 -v
Server version: Apache/2.4.38 (Ubuntu)
Server built: 2019-08-26T13:31:40
Любые идеи, как добавить AllowMethods GET POST OPTIONS DELETE PUT
?
Поскольку <Location>
директивы подходят для определенных потребностей (правила), и такие правила не подходят ни для какой конфигурации по умолчанию :)
<Location>
директива ограничивает объем прилагаемых директив URL. Это подобно<Directory>
директива, и запускает подраздел, который завершается с a</Location>
директива.<Location>
разделы обрабатываются в порядке, они появляются в конфигурационном файле, после<Directory>
разделы и.htaccess
файлы читаются, и после<Files>
разделы.
<Location>
разделы работают полностью вне файловой системы. Это имеет несколько последствий. Самое главное,<Location>
директивы не должны использоваться для управления доступом к местоположениям файловой системы. Так как несколько различных URL могут отобразиться на то же местоположение файловой системы, такой май средств управления доступом обошедшим.
<Directory />
директива относится к корню /
из файловой системы. В другой руке <Location />
относится к основному URI - http://example.com
/
, где example.com
ServerName
из виртуального хоста. Так правила, записанные для <Location />
переопределит правила, записанные для <Directory /var/www/html>
, где /var/www/html
DocumentRoot
из конкретного виртуального хоста.