需要与Git repo不同的.htaccess用于暂存和实时站点

需要与Git repo不同的.htaccess用于暂存和实时站点,git,.htaccess,deployment,Git,.htaccess,Deployment,以下是场景: 有一个Git repo,它跟踪网站文件,包括根目录下的.htaccess。Git回购被签出到暂存站点和生产站点 问题:必须使用密码(通过htpasswd身份验证)保护临时站点。这也会更改.htaccess文件。现在,从登台环境提交或推送意味着.htaccess文件(它为根目录启用密码保护)也被签出到live网站,从而使live网站也请求密码 现在我该怎么办呢?我应该停止跟踪.htaccess?我是否应该通过post接收挂钩覆盖.htaccess(可能?如何?)?有没有其他方法可以在

以下是场景:

有一个Git repo,它跟踪网站文件,包括根目录下的
.htaccess
。Git回购被签出到暂存站点和生产站点

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

现在我该怎么办呢?我应该停止跟踪
.htaccess
?我是否应该通过post接收挂钩覆盖
.htaccess
(可能?如何?)?有没有其他方法可以在不修改
.htaccess
的情况下保护目录?还有其他解决方案吗?

对于部署,我推荐它是一个漂亮的实用程序。

对于Git(与Mercurial相反),您只有一个解决方案:分支


您必须使用不同的分支进行登台和直播,内容只有一个差异:.htaccess数据。不是防弹的,需要大量的手工,但是-这是你的选择

我会选择不跟踪
.htaccess
本身

可能的选择:

  • 跟踪
    .htaccess prod
    .htaccess stage
    (如果存在更多差异,如各种配置设置、密码等,则更有用,如果只有一行,则可能不是最佳选项)。然后,每当您更新某些内容时,必须在两个文件中都执行此操作,而且您还必须记住,当文件发生更改时,必须在两个环境中手动复制文件,如
    .htaccess

  • 只存储一个文件
    .htaccess example
    ,在暂存区和活动区(查看签出后和/或合并后可能[1])中添加挂钩,以便在这两个区域中都将
    .htaccess example
    复制为本地
    .htaccess
    ,此外,在暂存中附加一行密码保护


  • [1] 我自己还没有使用过它们,所以我看文档时有点困惑。关于post receive,据我所知,它是在推送时在远程repo上执行的,而不是在拉送时在工作副本中执行的。

    这里有一个开箱即用的答案:为Dev上的.htaccess文件设置自定义文件名,不要签入。例如,.htaccess dev或.htaccess.staging

    您可以在vhosts配置中进行设置


    如果您使用MAMP Pro,您可以为每个本地域设置vhost配置。

    我知道Capistrano。但是我正在寻找一个Git特定的解决方案。我认为选择必须归结到分支或停止跟踪.htaccess。我不确定是否有两个分支是最好的解决方案-两个分支中的同一文件版本不同,因此这意味着对于将来的所有提交,您必须在第一个分支的基础上重新设置第二个分支的基础,因为你将无法快速推进更改。是的,选项1似乎是最可行的。只有一个问题:Apache不会在浏览器中提供.htaccess prod/stage(如果bot/用户请求),对吗?是的,这是一个重要的问题。默认情况下,它可能会为他们服务。您需要确定它不会出现在.htaccess本身中:)这可能会有帮助: