以下是该方案:
有一个Git仓库,它跟踪网站文件,包括根{4}}。 Git仓库已签出到暂存站点和生产站点。
问题:登台网站必须使用密码保护(通过htpasswd身份验证)。这也会更改.htaccess
文件。现在提交或推送暂存环境意味着.htaccess
文件(为根目录启用密码保护)也会被签出到实时网站,使得实时网站也要求输入密码。
现在我该怎么办呢?我应该停止跟踪.htaccess
吗?我应该通过post-receive hook覆盖.htaccess
(可能吗?怎么样?)?有没有其他方法可以在不修改.htaccess
的情况下保护目录?还有其他解决办法吗?
答案 0 :(得分:6)
我会选择不跟踪 .htaccess
本身。
可能的选择:
跟踪.htaccess-prod
和.htaccess-stage
(如果存在更多差异会更有用,例如各种配置设置,密码等,如果它只有一行,那么可能它不是最佳选择) 。然后,每当您更新某些内容时,您必须在两个文件中执行此操作,同时您必须记住在更改时手动将两个环境中的文件复制为.htaccess
。
只存储一个文件.htaccess-example
,在暂存和实时区域添加挂钩(查看 post-checkout 和/或合并后可能[1])两者都会在发生变化时将.htaccess-example
复制为本地.htaccess
,另外,在登台时附加一行密码保护。
[1]我自己还没有使用过它们,所以看着文档我有点困惑。关于 post-receive ,据我所知,它在推送到远程仓库时执行,而不是在工作副本中执行。
答案 1 :(得分:2)
这是一个开箱即用的答案:在Dev上设置.htaccess文件的自定义文件名,不要检查它。例如,.htaccess-dev或.htaccess.staging。
您可以在vhosts配置中进行设置。
http://www.electrictoolbox.com/change-htacces-filename-apache/
如果您使用MAMP Pro,则可以为每个本地域设置vhost配置。
答案 2 :(得分:1)
对于Git(与Mercurial相反),您只有一个解决方案:分支
您必须为Staging和Live使用不同的分支,内容有单一差异:.htaccess数据。没有防弹,有很多手工,但是 - 这是你的选择
答案 3 :(得分:-1)
为了部署我推荐capistrano,它是一个很棒的实用程序。