考虑来自 Apache 2.4.6(CentOS)设置的配置摘录:
<FilesMatch "^\.(.*)$">
Require all denied
</FilesMatch>
<VirtualHost *:443>
ServerName example.com
DocumentRoot /var/www
<Location /admin>
AuthType Basic
AuthName "Please enter your username and password"
AuthUserFile /some/path/to/.htpasswd
Require valid-user
</Location>
<Directory /var/www/admin/uploads>
<Files *.php>
Require all denied
</Files>
</Directory>
</VirtualHost>
/admin
只要身份验证成功,就可以访问点文件和 .php 文件。如果/admin
不是实际目录(并且我们无法使用块<Directory>
),如何配置它以遵守点文件和 php 文件限制?
我读过了https://httpd.apache.org/docs/2.4/sections.html并了解配置的应用顺序:
<Directory>
(正则表达式除外)和 .htaccess 同时完成(如果允许,则使用 .htaccess 覆盖<Directory>
)<DirectoryMatch>
(和<Directory "~">
)<Files>
并<FilesMatch>
同时完成<Location>
并<LocationMatch>
同时完成<If>
那么<Location>
覆盖<Directory>
和<FilesMatch>
,大概Require valid-user
会否定的效果吗Require all denied
?如果是这样,我们如何在<Location>
比赛中说需要有效用户并尊重其他条件?