未授权

未授权

设想

我只是想通过.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_coremod_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.phpsubfolder/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>
      

相关内容