.htaccess htaccess条件

.htaccess htaccess条件,.htaccess,.htpasswd,setenv,conditional,.htaccess,.htpasswd,Setenv,Conditional,我已经在我的实时站点上设置了htpasswd身份验证,它工作得很好,但是当我在开发环境中工作时,我不想被要求输入密码 在我的httpd.conf文件中,我有: SetEnv APP_ENV "development" AuthName "Restricted Area" AuthType Basic AuthUserFile /path/to/file/.htpasswd AuthGroupFile /dev/null require valid-user 在我的.htaccess文件中,我

我已经在我的实时站点上设置了htpasswd身份验证,它工作得很好,但是当我在开发环境中工作时,我不想被要求输入密码

在我的httpd.conf文件中,我有:

SetEnv APP_ENV "development"
AuthName "Restricted Area"
AuthType Basic
AuthUserFile /path/to/file/.htpasswd
AuthGroupFile /dev/null
require valid-user
在我的
.htaccess
文件中,我有:

SetEnv APP_ENV "development"
AuthName "Restricted Area"
AuthType Basic
AuthUserFile /path/to/file/.htpasswd
AuthGroupFile /dev/null
require valid-user
我想知道是否有必要在htppasswd内容周围加上一个条件,这样当
APP_ENV
development
时,我就不会被提示输入密码


这可能吗?

在[重新]加载配置时,Apache配置中的条件只工作一次

我要做的是使用相同的根目录创建第二个VirtualHost,并根据那里的IP地址使用Deny/Allow控制访问。

添加以下内容:

Require valid-user
Allow from <dev IP>
Satisfy Any
需要有效的用户
容许
满足任何

这将要求
需要有效的用户
允许来自
应用。

构建带有环境变量的条件块的方法之一是使用mod_宏模块。 我以前举过一个例子

在这种特殊情况下,您将在VirtualHost文件的顶部(在VirtualHost定义之前):

其中,htpassword文件的路径也可以设置为宏的参数


此解决方案的缺点是您需要在生产服务器上安装mod_宏,它不是一个常用的安装模块,您需要对生产环境进行一些控制才能做到这一点。另一方面,一个简单的解决方案是根据环境拥有多个版本的VirtualHost,并在Auth部分添加一些注释。但如果您正在搜索通用解决方案,这肯定意味着这是一个重复出现的问题,您希望避免手动编辑文件,在这种情况下,mod_宏可以成为利用apache经验的非常专业的方式,直到您的apache配置成为带有参数的单个宏,调用许多其他宏。

如果可以的话,您应该考虑升级到(或者升级到2.4尚未发布以来的最新2.3测试版)

可用的新特性之一是,使用该指令定义访问需求变得更加简单

你应该以这样的方式结束:

AuthName "Restricted Area"
AuthType Basic
AuthUserFile /path/to/file/.htpasswd
AuthGroupFile /path/to/file/groups

SetEnv APP_ENV "development"

<RequireAll>
  <RequireAny>
    <RequireAll>
      #main requirements
      Require group user
      #other conditions if needed for non-dev/non-local
    </RequireAll>

    <RequireAll>
      #allow direct if development
      Require env APP_ENV development
    </RequireAll>

    <RequireAll>
      <RequireAny>
        #allow loopback and local network
        Require ip 127.0.0.1
        Require ip 10.2
      </RequireAny>
    </RequireAll>
  <RequireAny>

  #other conditions if needed for everyone

  <RequireNone>
    #blacklist
  </RequireNone>
</RequireAll>
AuthName“限制区”
AuthType Basic
AuthUserFile/path/to/file/.htpasswd
AuthGroupFile/path/to/file/groups
SetEnv APP_ENV“开发”
#主要要求
需要组用户
#非开发/非本地需要的其他条件
#允许直接if开发
需要环境应用程序和环境开发
#允许环回和本地网络
要求ip 127.0.0.1
要求ip 10.2
#如果每个人都需要其他条件
#黑名单

.htaccess
文件中,可以将块嵌套在IfDefine指令中,如:

<IfDefine PROD>
  bla bla bla
</IfDefine>
您可以通过使用类似于
的方法来“反转”它,只在它不在开发环境中运行时运行,然后在该环境中传递-D DEV,并使生产站点保持原样,而不必编辑环境变量


根据您的需要进行相应的修改

这可以,但由于其他限制,我必须使用
满足所有要求。@gpojd您可以发布整个设置吗?很遗憾,我无法发布。My.htaccess与OP的类似,但我也受到IP地址的限制,并且有
满足所有
export APACHE_ARGUMENTS="-D PROD"