基于服务器的Htaccess身份validation,而不是客户端信息

在目前的项目中,我们有独立的开发和生产。 两者上的代码都在单个SVN存储库中。

问题在于从外部进入开发环境。 假设我们有两个独立的prod和dev服务器:

1.2.3.4 -> production 5.6.7.8 -> development 

这个想法是在两台服务器上使用与Auth相同的.htaccess,但其行为必须是:

  • 在开发服务器上,用户在访问该站点之前必须先进行身份validation
  • 在生产服务器上,用户具有完全访问权限,无需身份validation。

它应该是这样的(伪代码):

 IF $SERVER_IP == 5.6.7.8 THEN require_auth ELSE do_not_require_auth 

我们试图用尽可能less的额外模块来实现这一目标,但遗憾的是,我们无法根据服务器信息find关于如何在.htaccess中执行条件的任何信息。

这甚至有可能吗?

您应该将这些添加到您的.htaccess身份validation/授权指令。

 setenvif Server_Addr=1.2.3.4 okpublic allow from env=okpublic require valid-user satisfy any 

如果服务器地址是1.2.3.4,那么我们设置一个环境variables,我们将在第二行使用它来允许任何人访问。 如果服务器地址不是1.2.3.4,则用户必须进行身份validation。 如果满足这两个规则中的任何一个,则授予访问权限。

我做了什么是奇怪的,但哦,如果这是你想要的:)

另一个解决scheme,使用svn propedit svn:ignore在生产服务器上执行svn更新时忽略.htaccess文件就简单得多了。 如果你需要在prod和dev上有不同的.htaccess文件,那么也许你想看看分支,合并等,或者多用途的.htaccess文件只是更好。 我也想提到svn控件。