1

我不确定这里出了什么问题,但我有以下配置:

    # Root
    <Directory /var/www/xxx/>
            AllowOverride All

            Header always append Directory Home
    </Directory>


    # images
    <Directory /var/www/xxx/images/>
            AllowOverride None

            Order allow,deny
            allow from all

            Header always append Directory images
    </Directory>

在根目录中,我有一个 .htaccess 文件,将其包含在目录中的任何位置。

我想要做的是从这个配置中排除“图像”目录。我为每个目录添加了一个特殊的标头,以便我可以调试它,并根据下面的 CURL 命令 - 它正确地遵循规则。

< HTTP/1.1 401 Authorization Required
< Directory: Home, images
< Last-Modified: Fri, 21 Sep 2012 09:47:28 GMT
< ETag: "9e81e5-4069-20b94c00"
< Accept-Ranges: bytes
< Content-Length: 16489
< Connection: close
< Content-Type: image/png

问题是我收到 401 而不是 200OK,根据标题(主页,图像) - 它首先得到“全部”,然后应该用“无”覆盖它 - 但它没有,我还在收到401,这可能是什么问题?

4

2 回答 2

1

您在父目录中有一个需要授权的 htaccess 文件,该文件将应用于该/images/目录。该AllowOverride指令允许 htaccess 文件中的指令,它不会删除或禁止父 htaccess 文件可能具有的任何内容。

因此,如果您有:

  1. 文档根目录:AllowOverride All
  2. 文档根目录 htaccess 文件:需要验证,有效用户

进而:

  1. 图片目录:AllowOverride None
  2. 图像目录 htaccess:此文件中的任何内容都不会应用,因为AllowOverride

但父 htaccess 中的所有指令仍然适用。

如果您希望/images从需要身份验证的目录中排除,您需要在父 htaccess(或 vhost 配置,或任何您的设置)中的身份验证设置中设置排除项。

于 2012-09-27T17:10:25.150 回答
0

通过使用“满足任何”,我解决了子目录没有 AUTH 的问题

<Directory /var/www/xxx/images/>
    allow from all
    Satisfy Any

    Header always append Directory images
</Directory>
于 2012-10-06T13:19:38.260 回答