在.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
脚本。我该如何解决?
答案 0 :(得分:13)
由于我必须自己测试并且只能确认您所写的内容是正确的,所以我开始环顾四周,找到关于SetEnv
,SetEnvIf
和{{1}的post可见性。看起来RewriteRule
对SetEnv
不可见,如果我更改您的示例使用:
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