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

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

在当前项目中,我们将开发和生产分开。两者的代码都位于单个 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 控件。

相关内容