在当前项目中,我们将开发和生产分开。两者的代码都位于单个 SVN 存储库中。
问题在于从外部访问开发环境。假设我们有两个用于生产和开发的独立服务器:
1.2.3.4 -> production
5.6.7.8 -> development
这个想法是在两台服务器上使用相同的 .htaccess 和 Auth,但行为必须是:
- 在开发服务器上,用户必须先进行身份验证才能访问网站
- 在生产服务器上,用户拥有完全访问权限,无需身份验证。
它应该是这样的(伪代码):
IF $SERVER_IP == 5.6.7.8 THEN
require_auth
ELSE
do_not_require_auth
我们正在尝试使用尽可能少的附加模块来实现这一点,但遗憾的是,我们无法根据服务器信息找到有关如何在 .htaccess 中执行条件的任何信息。
这可能吗?
答案1
您应该将这些添加到您的.htaccess 身份验证/授权指令中。
setenvif Server_Addr=1.2.3.4 okpublic
allow from env=okpublic
require valid-user
satisfy any
如果服务器地址是 1.2.3.4,那么我们设置一个环境变量,我们将在第二行使用该变量来允许任何人访问。如果服务器地址不是 1.2.3.4,那么用户必须进行身份验证。如果满足这两条规则中的任何一条,则授予访问权限。
我做的事情很奇怪,但是好吧,如果这是你想要的:)
另一个更简单的解决方案是在生产服务器上执行 svn update 时忽略 .htaccess 文件,使用 svn propedit svn:ignore。如果您需要在 prod 和 dev 上使用不同的 .htaccess 文件,那么您可能需要研究分支、合并等。或者多用途 .htaccess 文件可能更好。我也想提到 svn 控件。