环境变量值为RewriteCond

时间:2014-03-10 18:49:27

标签: apache .htaccess mod-rewrite

我有以下重写规则:

RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www\.domain\.com
RewriteCond %{HTTP_HOST} !^static\.domain\.com
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

出于开发目的,环境变量APP_ENV = development在vhosts.conf中设置

是否可以使用APP_ENV的值作为重写条件?即,我不希望在开发环境中重定向任何内容。

我试过以下,也许是无知的?

RewriteCond %{ENV:APP_ENV} !^development

由于

2 个答案:

答案 0 :(得分:2)

无论出于何种原因,{/ 1>}(mod_env)在 mod_rewrite之后被应用,但是,mod_setenvif在之前被应用。这就是你需要的:

SetEnv
您的vhost文件中的

SetEnvIf Request_URI ^ APPENV=development 在mod_rewrite已经应用之后才会设置值。

答案 1 :(得分:0)

您可以在.htaccess:

中定义您的环境变量
SetEnvIf Host ^ APPENV=development

# then evaluate it in your rules further down
RewriteCond %{ENV:APPENV} !^development
RewriteCond %{HTTP_HOST} !^www\.domain\.com
RewriteCond %{HTTP_HOST} !^static\.domain\.com
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]