如何参数化.htaccess文件中.htpasswd的路径?

时间:2016-10-17 14:06:50

标签: .htaccess .htpasswd

我的.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的绝对目录路径。

1 个答案:

答案 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目录下时,上述代码段才有效。