.htaccess AuthBasic如果自定义环境变量等于表达式

.htaccess AuthBasic如果自定义环境变量等于表达式,.htaccess,mod-rewrite,environment-variables,typo3,.htaccess,Mod Rewrite,Environment Variables,Typo3,我的目标是,只要自定义环境变量TYPO3\u CONTEXT不等于“Production”,就需要授权。也就是说,我想在非生产上下文上强制授权 这是我的.htaccess中的内容: AuthUserFile /var/www/htpasswd AuthName "Password Protected" AuthType Basic Order Deny,Allow Deny from all Satisfy any Require valid-user Allow from env=(TYPO

我的目标是,只要自定义环境变量TYPO3\u CONTEXT不等于
“Production”
,就需要授权。也就是说,我想在非生产上下文上强制授权

这是我的.htaccess中的内容:

AuthUserFile /var/www/htpasswd
AuthName "Password Protected"
AuthType Basic

Order Deny,Allow
Deny from all
Satisfy any
Require valid-user
Allow from env=(TYPO3_CONTEXT=='Production')

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^dev.\example.\com$
RewriteRule .? - [E=TYPO3_CONTEXT:Development]
RewriteCond %{HTTP_HOST} ^www.\example.\com$
RewriteRule .? - [E=TYPO3_CONTEXT:Production]
行中正确的语法是什么:

Allow from env=(TYPO3_CONTEXT=='Production')

是否可以在早期阶段查询env变量,因为随后定义了重写规则?

您不能在allow指令中直接与env匹配,首先需要使用SetEnvIfNoCase指令与预定义的env匹配,然后使用allow指令:

#1)step 1 
SetEnvIfNoCase TYPO3_CONTEXT !production allowed=1
#2)step 2
AuthUserFile /var/www/htpasswd
AuthName "Password Protected"
AuthType Basic

Order Deny,Allow
Deny from all
Satisfy any
Require valid-user
Allow from env=allowed

您不能在allow指令中直接匹配env,您首先需要使用SetEnvIfNoCase指令匹配预定义的env,然后使用allow指令:

#1)step 1 
SetEnvIfNoCase TYPO3_CONTEXT !production allowed=1
#2)step 2
AuthUserFile /var/www/htpasswd
AuthName "Password Protected"
AuthType Basic

Order Deny,Allow
Deny from all
Satisfy any
Require valid-user
Allow from env=allowed

谢谢。唯一的问题是,TYPO3_上下文的值是通过RewriteCond/rewriterulethankyou设置的。唯一的问题是,TYPO3_上下文的值是通过RewriteCond/RewriteRule设置的