我可以在主机中配置root .htaccess来保护目录,而不是将每个配置放在每个目录上吗?
像这样:
/.htaccess (configuring authentication to /folder)
/.htpasswd
/folder
而不是在每个文件夹中:
/folder
/folder/.htaccess
/folder/.htpasswd
答案 0 :(得分:0)
不,你不能。
.htaccess文件本身就是每个目录配置。这意味着在/test/
目录中有一个htaccess文件,与在server / vhost config中具有相同的配置指令相同:
<Directory "/var/www/document-root/test">
... stuff from htaccess file
</Directory>
因此,您无法在htaccess文件中使用<Directory>
容器。如果你想做我认为你想做的事情,请将所有配置放在单个<Directory>
容器内的server / vhost配置中,或者在要保护的每个目录中都有一个htaccess文件。
另一方面,如果你有一个领域和密码文件,并且你只希望它应用于特定的URI 。然后你可以使用setenvif和类似的东西:
# set SECURED var to 1 if URI is a protected one
SetEnvIfNoCase Request_URI "^/test/" SECURED=1
SetEnvIfNoCase Request_URI "^/test2/" SECURED=1
# enforce auth if SECURED=1
#AuthType Basic
AuthName "Acesso Restrito"
AuthUserFile /home/public_html/.htpasswd
Require valid-user
Order allow,deny
Allow from all
Deny from env=SECURED
Satisfy any
因此SetEnvIfNoCase
指令与请求URI匹配,如果它与列表中的指针匹配,则需要密码验证。
此外,您可能不希望文档根目录中的htpasswd文件 。