保护目录从root .htaccess设置它

时间:2014-09-08 16:48:45

标签: apache .htaccess mod-rewrite

我可以在主机中配置root .htaccess来保护目录,而不是将每个配置放在每个目录上吗?

像这样:

/.htaccess (configuring authentication to /folder) /.htpasswd /folder

而不是在每个文件夹中:

/folder /folder/.htaccess /folder/.htpasswd

1 个答案:

答案 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文件