这可能是一个简单的问题,但我在文档中找不到解决方案。
我想使用 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 文件并对其他目录进行位置控制对我来说不起作用。
希望能帮助到你。