Apache 身份验证:允许公众访问子目录

Apache 身份验证:允许公众访问子目录

这可能是一个简单的问题,但我在文档中找不到解决方案。

我想使用 BASIC 身份验证来密码保护我的网站。但我希望子目录不受保护:

http://mysite.com/ -> BASIC protected
http://mysite.com/somedir -> BASIC protected
http://mysite.com/someotherdir -> BASIC protected
http://mysite.com/public -> not protected

保护整个网站没有问题,但我不知道如何“取消保护”一个目录。该网站托管在共享主机上,因此我只能访问 .htaccess 文件来进行配置。

是否有否定身份验证的指令?

谢谢您的帮助 ...

答案1

.htaccess 不应该存在问题,这取决于主机允许的内容。

您可以尝试将 .htaccess 放在子文件夹中,内容如下,但必须为其所在的目录启用覆盖。

 Allow From All
 Satisfy Any

答案2

好的,对于路径 server.com/private/public:

server.com/private/.htaccess

AuthType Basic
AuthName "Private, keep out."
Require...

server.com/private/public/.htaccess

Allow From All
Satisfy Any

这里的关键是“满足任何”将上游的要求组合在一起。“满足全部”是默认设置。

答案3

我相信这可以做到:

# put the global auth stuff here
...

# put the override here
<Location /public>
Allow from All
Satisfy Any
</Location>

答案4

我设法通过以下方式解决了这个问题:

<Directory "/path/to/maindirectory">
[... auth stuff ... ]
</Directory>

<Directory "/path/to/mysubdirectory">
 Allow from All
 Satisfy Any
</Directory>

请勿使用位置,因为它们区分大小写,并且它们不会对实际的文件夹访问起作用,而只会对 URL 起作用。

例如,如果我写

http:/mywebsite/STUFF

或者

http://mywebsite/stuff

或者

http://mywebsite/StUfF

对于位置控制来说,这是不同的,即使调用的物理目录是相同的!

简而言之,您检查目录“内容”的访问权限,我可以用不同的情况来编写它。

另外,在单个目录中使用 .htaccess 文件并对其他目录进行位置控制对我来说不起作用。

希望能帮助到你。

相关内容