<location>
为什么我的 Apache2 配置文件中没有?
$ 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
?
答案1
因为<Location>
指令适合于特定需求(规则),而这些规则不适合任何默认配置:)
指令
<Location>
通过 URL 限制所包含指令的范围。它类似于指令<Directory>
,并以子节开始,并以指令结束</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
特定虚拟主机。