hsz*_*hsz 5 apache mod-rewrite
在我的.htaccess设置中:
SetEnv APPLICATION_ENV development
Run Code Online (Sandbox Code Playgroud)
我想检查是否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]
Run Code Online (Sandbox Code Playgroud)
但是它不起作用 - 总是运行app.php脚本.我该如何解决?
Qbe*_*ben 13
因为我有这个测试自己,只能确认你写的是正确的,我开始环顾四周,发现这个职位有关SetEnv,SetEnvIf和RewriteRule知名度.它似乎SetEnv是不可见的RewriteCond,如果我改变你的例子使用:
SetEnvIf APPLICATION_ENV ^(.*)$ APPLICATION_ENV=development
Run Code Online (Sandbox Code Playgroud)
我实际上得到了你必须加载的规则app_dev.php.您也可以使用以下RewriteRule方法设置变量:
RewriteRule .* - [E=APPLICATION_ENV:development,NE]
Run Code Online (Sandbox Code Playgroud)
但是,看起来SetEnv不能使用(在Apache 2.2.22上测试).
编辑
正如julp在对这篇文章的评论中指出的,这在Apache文档部分设置环境变量中非常清楚:
The SetEnv directive runs late during request processing meaning that directives
such as SetEnvIf and RewriteCond will not see the variables set with it.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8648 次 |
| 最近记录: |