apache .htaccess是否应该在源代码控制中进行版本控制?

bbmckpt7  于 2023-03-31  发布在  Apache
关注(0)|答案(2)|浏览(84)

如果你遵循的原则是应用程序在脱离版本控制时应该“开箱即用”,那么.htaccess应该包括在内。但是有些地方感觉不对,因为它并没有真正感觉到是应用程序的一部分。我很矛盾,有人能让我放心吗?

6rvt4ljy

6rvt4ljy1#

我通常会将应用程序的.htaccess保存在源代码管理中,其中包括应用程序运行所需的Apache配置,即重写不特定于运行它的服务器的规则、对环境变量的访问等。
可以这样考虑-如果.htaccess文件包含应用程序使用的重写规则,则这些规则实际上是应用程序路由的一部分,因此 * 是 * 应用程序的一部分。
如果你正在打包一个应用程序供其他人下载和使用,你可能应该包括一个 backbone .htaccess文件,其中包括使应用程序运行所需的规则。如果你的应用程序只打算在你自己的服务器上运行,并且你将所有相关的Apache配置保存在.htaccess中,而不是VirtualHost配置,我会说它确实属于源代码控制。

jaxagkaj

jaxagkaj2#

这对我们来说也是一个常见的问题,我知道你说的“感觉不对”是什么意思。
然而,对我来说,问题不是感觉.htaccess不是应用程序的一部分,因为它的一部分显然是,问题更多的是文件混合了应用程序特定的代码(路由等)与安装特定的东西(本地URL重写、身份验证/访问规则等)。理想情况下,您将对特定于应用程序的规则进行版本控制,但不对特定于安装的规则进行版本控制。但当然这是不可能的,因为两者需要在同一文件中。
我可以想到四种方法来管理这一点。最佳方法将取决于您的特定情况(并且可能因项目而异):

  1. Michael的第二个建议是最好的选择,如果你能控制部署的话。和你的主Apache VirtualHost指令中的任何安装特定的代码。这提供了完全的分离,但如果你没有直接访问主Apache配置或分发给第三方,这不是一个可行的解决方案。如果在同一站点根目录下安装了多个应用程序,并且这些特定于安装的元素在应用程序之间有所不同,则也可能会出现问题。
    1.对.htaccess文件中应用程序特定的元素进行版本控制,使用清晰的注解标记,例如### FOO APPLICATION SETTINGS - DO NOT CHANGE ###### ADD ANY ADDITIONAL LOCAL CONFIG BELOW THIS LINE ####,并且不对安装特定的任何内容进行版本控制。如果规则足够简单,不会真正导致冲突,则这很好,但如果 backbone 文件要求用户修改现有行,则不是很好(例如RewriteBase),因为您很可能最终会遇到合并冲突。如果部署是版本控制的,则还存在不必要的编辑进入存储库的风险(对于开发版本可能是这种情况,至少),如果不是,它就会冒着本地更改被升级吹走的风险(例如公共zipfile分发)。
    1.作为一个很好的替代方案,我们决定使用一个名为.htaccess.sample的文件进行版本控制,该文件可以包含特定于应用程序的规则和(如果相关)用户可能会发现有用的安装特定规则的建议。无论是否使用版本控制,这都易于维护和部署,但是升级会稍微困难一些,因为用户需要手动将任何更改合并到本地.htaccess文件中。在我们的情况下,升级总是由开发人员完成,因此这不是一个大问题,假设适当的diff工具可用。
    1.与#2相同,除了你还提供了一个脚本来自动应用任何修改。更多的工作要设置,不一定更多的工作要维护,这取决于你如何实现它(例如,如果它只是替换一些标记之间的代码块),如果你要分发给广泛的用户群,可能是值得的。这就是WordPress所做的,例如。

相关问题