8

这是场景:

有一个 Git 存储库,用于跟踪网站文件,包括.htaccess根目录。Git 存储库被签出到临时站点和生产站点。

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

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

4

4 回答 4

6

我会选择不跟踪 .htaccess自己。

可能的选项:

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

  2. 只存储一个文件.htaccess-example,在暂存区域和实时区域中添加钩子(查看post-checkout和/或post-merge可能 [1]),只要有更改,它们都将复制.htaccess-example为本地文件,此外.htaccess, 在暂存中附加一个带密码保护的行。

[1] 我自己还没有使用过它们,所以我在看文档时有点困惑。关于post-receive,据我了解,它在推送到远程仓库时执行,而不是在拉取时在工作副本中执行。

于 2012-11-17T18:54:23.793 回答
2

这是一个外框的答案:在 Dev 上为 .htaccess 文件设置自定义文件名,不要将其签入。例如,.htaccess-dev 或 .htaccess.staging。

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

http://www.electrictoolbox.com/change-htacces-filename-apache/

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

于 2014-05-23T02:06:02.900 回答
2

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

您必须为 Staging 和 Live 使用不同的分支,但内容有一个区别:.htaccess 数据。不是防弹的,有很多手工工作,但是 - 这是你的选择

于 2012-11-17T13:46:07.313 回答
-2

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

于 2012-11-17T13:35:20.040 回答