用SetEnv重写Cond

时间:2013-10-14 14:37:06

标签: apache mod-rewrite

.htaccess我设置:

SetEnv APPLICATION_ENV development

我想检查APPLICATION_ENV是否等于development然后运行app_dev.php,否则app.php

SetEnv APPLICATION_ENV development

RewriteCond %{ENV:APPLICATION_ENV} development
RewriteRule .? %{ENV:BASE}/app_dev.php [L]
RewriteRule .? %{ENV:BASE}/app.php [L]

但是它不起作用 - 始终运行app.php脚本。我该如何解决?

1 个答案:

答案 0 :(得分:13)

由于我必须自己测试并且只能确认您所写的内容是正确的,所以我开始环顾四周,找到关于SetEnvSetEnvIf和{{1}的post可见性。看起来RewriteRuleSetEnv不可见,如果我更改您的示例使用:

RewriteCond

我实际上已经获得了加载SetEnvIf APPLICATION_ENV ^(.*)$ APPLICATION_ENV=development 的规则。您也可以使用app_dev.php设置变量:

RewriteRule

但是,不能使用RewriteRule .* - [E=APPLICATION_ENV:development,NE] 看起来像(在Apache 2.2.22上测试过)。

修改
正如julp在对这篇文章的评论中指出的那样,这在Apache文档部分Setting Environment Variables中非常清楚:

SetEnv