.htaccess htaccess条件
我已经在我的实时站点上设置了htpasswd身份验证,它工作得很好,但是当我在开发环境中工作时,我不想被要求输入密码 在我的httpd.conf文件中,我有:.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文件中,我
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"