Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess文件位于prod上并在git中跟踪,不希望使用prod';s.htaccess-on-dev_Git_.htaccess - Fatal编程技术网

.htaccess文件位于prod上并在git中跟踪,不希望使用prod';s.htaccess-on-dev

.htaccess文件位于prod上并在git中跟踪,不希望使用prod';s.htaccess-on-dev,git,.htaccess,Git,.htaccess,如果这是重复的,请将其标记为相同。另外,我不确定这是否是一个基于意见的问题。我的谷歌搜索没有返回任何与我的困境相关的信息,我也不确定我应该搜索什么。(,) 我的问题是如何保持git中跟踪的生产.htaccess文件不干扰开发环境的web服务器 我的git部署设置的简要说明: 本地机器(开发)->比特桶->生产 生产在共享主机上,所以我不能直接从dev推送到生产,我必须使用Bitbucket作为中介 我的开发环境: 我在本地使用Vagrant作为开发环境,它使用Apache作为其web服务器。va

如果这是重复的,请将其标记为相同。另外,我不确定这是否是一个基于意见的问题。我的谷歌搜索没有返回任何与我的困境相关的信息,我也不确定我应该搜索什么。(,)

我的问题是如何保持git中跟踪的生产
.htaccess
文件不干扰开发环境的web服务器

我的git部署设置的简要说明:
本地机器(开发)->比特桶->生产

生产在共享主机上,所以我不能直接从dev推送到生产,我必须使用Bitbucket作为中介

我的开发环境:
我在本地使用Vagrant作为开发环境,它使用Apache作为其web服务器。vagrantbox设置脚本应用
httpd.conf
文件中的更改来设置
VirtualHost
DocumentRoot
DirectoryIndex

这在过去对我很有效

在生产中,还使用Apache。我最初没有在git中跟踪
.htaccess
,但最近有一个变化(HTTP到HTTPS重定向),使我决定开始跟踪它。我现在遇到的问题是,生产
.htaccess
文件被拉到我的dev目录,并影响我的devweb服务器

我的一些想法是:

  • 创建一个单独的git repo来跟踪生产中不会添加到Bitbucket或dev中的
    .htaccess
    文件,但这让我觉得很复杂
  • 正在创建分支以跟踪
    .htaccess
    文件,但。。。我预见到这会给我带来麻烦,因为我将在prod/dev上处理分支,很有可能我会把事情搞砸
  • 我完全放弃了跟踪
    .htaccess
    文件,但这似乎会导致以后的灾难

  • 还有别的办法吗?或者我应该使用我想到的一个想法吗?

    分支aproach可能是个好主意,可能是一个没有.htaccess文件的开发分支,或者像master这样有跟踪功能的生产分支。因此,当您准备好生产时,您可以合并到master。

    另一个答案可能就是您正在寻找的答案,但是,在不更改版本控制的情况下,可能有两个备选方案

    如果您的本地开发环境根本不使用
    .htaccess
    ,那么您可以在服务器配置中禁用此功能,那么prod
    .htaccess
    文件是否存在并不重要:

    <Directory /path/to/public_html>
        # Disable .htaccess files...
        AllowOverride none
    </Directory>
    
    .htaccess
    中:

    <IfDefine DEV>
        # Development server directives...
    </IfDefine>
    
    <IfDefine !DEV>
        # Production server directives...
    </IfDefine>
    
    
    #开发服务器指令。。。
    #生产服务器指令。。。
    

    注意
    (不是)第二个规则块上的前缀。

    我遇到了完全相同的问题。。。我目前正在做的是将我的工作dev目录保存在/var/www/site[dev]/下,但我忽略了.htaccess文件以及其他仅用于开发的文件。然后,我在它旁边保留了第二个目录,位于/var/www/site[prod]/,其中包含我希望在生产服务器上使用的所有变体。因此,我从[dev]提交并推送,然后拉回到[prod]并从那里部署。我的意思是,这是可行的,但我觉得像这样的东西应该有一个行业标准,这就是我来这里的原因。但不管怎样,我想如果它起作用,它就会起作用。耸耸肩

    我注意到OP的问题晚了两分钟-你先回答:)。“分支”(例如“dev”)可能是此类情况的理想选择。为了回答OP的担忧,没有必要让事情变得“一团糟”。在CI/CD环境中,使用分支可能会更干净。我没有想到这一点。我使用它的项目非常小,所以我一直直接提交给
    master
    ,只针对我正在完成但尚未准备好生产的功能进行分支。我想我会在本地创建一个
    development
    分支,并删除
    master
    分支。Bitbucket将同时具有
    开发
    ,我可以将
    开发
    分支合并到Bitbucket上的
    ,然后从生产中提取
    。这听起来正确吗?完全正确。您甚至可能不需要合并。当然,另一种可能是有两个文件:一个用于prod,另一个用于dev。您可以保存这两个文件,但将它们放在单独的目录(/prod/.htaccess,/dev/.htaccess)中,或者给它们单独的名称(.htaccess.prod,.htaccess.dev)。我喜欢这种方法,而不是保留两个分支,但是在git中有两个分支可能是解决这个问题的正确方法。我在git中管理分支和远程主机时遇到问题,我可以看到自己意外地覆盖了dev中的某些内容,这需要大量的工作和文件处理才能修复。是的,我同意,尽管“正确”可能是主观的-YMMV。我经常在
    .htaccess
    中使用一个条件来区分live/development服务器,因为两者之间可能只有一个很小的路径差异,而且通常更容易在同一个文件中一起维护。
    <IfDefine DEV>
        # Development server directives...
    </IfDefine>
    
    <IfDefine !DEV>
        # Production server directives...
    </IfDefine>