我的.htaccess文件中有以下代码
AuthUserFile ./.htpasswd
AuthGroupFile /dev/null
AuthName "Dev Area One"
AuthType Basic
<Limit GET>
require valid-user
</Limit>
这会导致500内部服务器错误,因为Apache说它无法找到文件/etc/apache2/.htpasswd。这是因为.htpasswd位于/var/www/html/dev1.staging.com/public_html/.htpasswd
目录中,我的.htaccess位于/var/www/html/dev1.staging.com/public_html/.htaccess
。
我可以将AuthUserFile ./.htpasswd
替换为AuthUserFile SOMEVARIABLE+.htpasswd
,以便每当其他团队成员对其开发服务器执行git pull origin master
时,.htaccess将正确引用应该位于其中的.htpasswd。与.htaccess相同的目录?
这纯粹仅用于开发目的。有一些服务器(其中一些是共享主机),我们没有文件写入权限,所以我们不知道我们的Web项目服务的目录,所以我们不知道提前时间是.htpasswd的绝对目录路径。
答案 0 :(得分:0)
您可以使用PassEnv
directive
AuthUserFile
的路径中使用shell环境变量
PassEnv HOME
AuthUserFile ${HOME}/.htpasswd
AuthGroupFile /dev/null
AuthName "Dev Area One"
AuthType Basic
<Limit GET>
require valid-user
</Limit>
只有当每个用户将.htpasswd
直接存储在$HOME
目录下时,上述代码段才有效。