我花了几天时间研究如何根据我的子域使用不同的AuthUserFile路径。
为什么我有这个问题:我的网站的管理员访问权限受htaccess-htpasswd保护。我现在用比特桶管理回购,并配置自动部署。由于这个部署系统,我需要为每个站点实例使用相同的文件:假设我有:
local.mysite.com
staging.mysite.com
www.mysite.com
现在的问题是,每个"站点"的AuthUserFile绝对路径不同,所以我需要根据子域来定义它。
我试图做的事情:我在考虑使用这样的If语句:
<If "Host == 'local.mysite.com'">
AuthUserFile
</If>
但我运行的是apache2.2,所以不可用。
然后我考虑使用类似于的东西
SetEnvIf HOST ^local.mysite.com$ ENV_LOCAL
<IfDefine ENV_LOCAL>
AuthType Basic
AuthName "Password required"
AuthUserFile /my/local/path/.htpasswd
Require valid-user
</IfDefine>
但显然,IfDefine无法读取SetEnvIf变量。
现在我被屏蔽了,在网上找不到任何可以帮助我的东西。如果我不必也更改apache配置,那我会更好。。
有什么想法吗?
没关系,这似乎几乎是不可能的,所以我只会创建一个脚本,在部署时自动生成.htaccess文件,并将.htacccess放在.gitignore中,这样我在尝试拉取时就不会发生冲突。