设想
我只是想通过.htaccess 密码文件夹允许一个 php 文件。
迄今为止的尝试
- 我的特殊文件.php
- 子文件夹/my-special-file.php
- ./子文件夹/我的特殊文件.php
- 尝试在子文件夹内使用 .htaccess
问题
我错过了什么?我知道我以前也做过类似的小事,但我只是没看到。
.htaccess 文件
AuthUserFile /some/folder/.htpasswd
AuthType Basic
AuthName "Password Required"
Require user personA personB
Order Deny,Allow
Deny from All
#not working
<Files "./subfolder/my-special-file.php">
Allow from All
</Files>
Satisfy Any
网页 401
未授权
此服务器无法验证您是否有权访问所请求的文档。您提供的凭据有误(例如密码错误),或者您的浏览器无法提供所需的凭据。
Apache/2.4.7 (Ubuntu) 服务器位于 xx 端口 80
答案1
这访问控制您正在使用的 Apache 2.4 中发生了变化,这些变化可能在从 2.2 升级到 2.4简而言之,从修改 mod_access_compat:
兼容性:Apache HTTP Server 2.3 中提供与 Apache httpd 2.x 以前版本的兼容模块。此模块提供的指令已被新的 authz 重构弃用。请参阅mod_authz_host
让我们根据以下情况重构您的配置mod_authz_core和mod_authz_host:
<Directory "/var/www/somefolder">
AuthType Basic
AuthName "Password Required"
AuthUserFile "/some/folder/.htpasswd"
Require user personA personB
<Files "my-special-file.php">
Require all granted
</Files>
</Directory>
- 上下文
<Directory>
可以替换为.htaccess
,尽管不建议。 <Files "my-special-file.php">
所有子文件夹都会继承该权限,即- 这允许访问等
my-special-file.php
。subfolder/my-special-file.php
如果您只想将其应用于
subfolder/my-special-file.php
,则需要:<Directory "/var/www/somefolder"> AuthType Basic AuthName "Password Required" AuthUserFile "/path/to/.htpasswd" Require user personA personB <Directory "/var/www/somefolder/subfolder"> <Files "my-special-file.php"> Require all granted </Files> </Directory> </Directory>
- 这允许访问等