从Git repo需要不同的.htaccess用于登台和现场网站

时间:2012-11-17 13:26:49

标签: git .htaccess deployment

以下是该方案:

有一个Git仓库,它跟踪网站文件,包括根{4}}。 Git仓库已签出到暂存站点和生产站点。

问题:登台网站必须使用密码保护(通过htpasswd身份验证)。这也会更改.htaccess文件。现在提交或推送暂存环境意味着.htaccess文件(为根目录启用密码保护)也会被签出到实时网站,使得实时网站也要求输入密码。

现在我该怎么办呢?我应该停止跟踪.htaccess吗?我应该通过post-receive hook覆盖.htaccess(可能吗?怎么样?)?有没有其他方法可以在不修改.htaccess的情况下保护目录?还有其他解决办法吗?

4 个答案:

答案 0 :(得分:6)

我会选择不跟踪 .htaccess本身。

可能的选择:

  1. 跟踪.htaccess-prod.htaccess-stage(如果存在更多差异会更有用,例如各种配置设置,密码等,如果它只有一行,那么可能它不是最佳选择) 。然后,每当您更新某些内容时,您必须在两个文件中执行此操作,同时您必须记住在更改时手动将两个环境中的文件复制为.htaccess

  2. 只存储一个文件.htaccess-example,在暂存和实时区域添加挂钩(查看 post-checkout 和/或合并后可能[1])两者都会在发生变化时将.htaccess-example复制为本地.htaccess,另外,在登台时附加一行密码保护。

    < / LI>

    [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,它是一个很棒的实用程序。