我不确定这里出了什么问题,但我有以下问题:
# 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,这里有什么问题?
父目录中有一个 htaccess 文件,该文件需要授权,并且正在应用于/images/
目录。AllowOverride
指令允许 htaccess 文件中的指令,它不会删除或禁止父 htaccess 文件可能具有的任何内容。
因此,如果您有:
- 文档根目录:
AllowOverride All
- 文档根目录 htaccess 文件:需要身份验证,有效用户
然后:
- 图像目录:
AllowOverride None
- 图像目录 htaccess:由于
AllowOverride
,不会应用此文件中的任何内容
但父 HTaccess 中的所有指令仍然适用。
如果您希望将/images
目录排除在需要身份验证之外,则需要在父 htaccess(或虚拟主机配置,或您的设置所在的任何位置)的身份验证设置中设置排除项。
通过使用"满足任何",我解决了子目录没有AUTH的问题
<Directory /var/www/xxx/images/>
allow from all
Satisfy Any
Header always append Directory images
</Directory>