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

时间:2016-04-13 11:15:54

标签: .htaccess mod-rewrite environment-variables typo3

我的目标是在自定义环境变量 TYPO3_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变量,导致重写规则是否在之后定义?

1 个答案:

答案 0 :(得分:0)

您无法直接在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

https://httpd.apache.org/docs/current/mod/mod_setenvif.html